Changeset 13041 for OpenSceneGraph/trunk/include/osgDB/Serializer
- Timestamp:
- 03/21/12 18:36:20 (14 months ago)
- Files:
-
- 1 modified
-
OpenSceneGraph/trunk/include/osgDB/Serializer (modified) (37 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/include/osgDB/Serializer
r12483 r13041 39 39 typedef std::map<std::string, Value> StringToValue; 40 40 typedef std::map<Value, std::string> ValueToString; 41 41 42 42 IntLookup() {} 43 43 unsigned int size() const { return _stringToValue.size(); } 44 44 45 45 void add( const char* str, Value value ) 46 46 { … … 54 54 _stringToValue[str] = value; 55 55 } 56 56 57 57 Value getValue( const char* str ) 58 58 { … … 68 68 return itr->second; 69 69 } 70 70 71 71 const std::string& getString( Value value ) 72 72 { … … 82 82 return itr->second; 83 83 } 84 84 85 85 protected: 86 86 StringToValue _stringToValue; … … 93 93 typedef void (*AddValueFunc)( IntLookup* lookup ); 94 94 UserLookupTableProxy( AddValueFunc func ) { if ( func ) (*func)(&_lookup); } 95 95 96 96 IntLookup _lookup; 97 97 }; … … 146 146 typedef bool (*Reader)( InputStream&, C& ); 147 147 typedef bool (*Writer)( OutputStream&, const C& ); 148 148 149 149 UserSerializer( const char* name, Checker cf, Reader rf, Writer wf ) 150 150 : BaseSerializer(), _name(name), _checker(cf), _reader(rf), _writer(wf) {} 151 151 152 152 virtual bool read( InputStream& is, osg::Object& obj ) 153 153 { … … 165 165 return (*_reader)(is, object); 166 166 } 167 167 168 168 virtual bool write( OutputStream& os, const osg::Object& obj ) 169 169 { … … 182 182 return (*_writer)(os, object); 183 183 } 184 184 185 185 virtual const std::string& getName() const { return _name; } 186 186 187 187 protected: 188 188 std::string _name; 189 189 Checker _checker; 190 190 191 191 public: 192 192 Reader _reader; … … 218 218 typedef P (C::*Getter)() const; 219 219 typedef void (C::*Setter)( P ); 220 220 221 221 PropByValSerializer( const char* name, P def, Getter gf, Setter sf, bool useHex=false ) 222 222 : ParentType(name, def), _getter(gf), _setter(sf), _useHex(useHex) {} 223 223 224 224 virtual bool read( InputStream& is, osg::Object& obj ) 225 225 { … … 241 241 return true; 242 242 } 243 243 244 244 virtual bool write( OutputStream& os, const osg::Object& obj ) 245 245 { … … 260 260 return true; 261 261 } 262 262 263 263 public: 264 264 Getter _getter; 265 265 Setter _setter; 266 266 267 267 protected: 268 268 bool _useHex; … … 277 277 typedef CP (C::*Getter)() const; 278 278 typedef void (C::*Setter)( CP ); 279 279 280 280 PropByRefSerializer( const char* name, CP def, Getter gf, Setter sf ) 281 281 : ParentType(name, def), _getter(gf), _setter(sf) {} 282 282 283 283 virtual bool read( InputStream& is, osg::Object& obj ) 284 284 { … … 298 298 return true; 299 299 } 300 300 301 301 virtual bool write( OutputStream& os, const osg::Object& obj ) 302 302 { … … 313 313 return true; 314 314 } 315 315 316 316 public: 317 317 Getter _getter; … … 326 326 typedef const osg::Matrix& (C::*Getter)() const; 327 327 typedef void (C::*Setter)( const osg::Matrix& ); 328 328 329 329 MatrixSerializer( const char* name, const osg::Matrix& def, Getter gf, Setter sf ) 330 330 : ParentType(name, def), _getter(gf), _setter(sf) {} 331 331 332 332 virtual bool read( InputStream& is, osg::Object& obj ) 333 333 { … … 347 347 return true; 348 348 } 349 349 350 350 virtual bool write( OutputStream& os, const osg::Object& obj ) 351 351 { … … 363 363 return true; 364 364 } 365 365 366 366 protected: 367 367 void readMatrixImplementation( InputStream& is, osg::Matrix& matrix ) … … 382 382 #endif 383 383 } 384 384 385 385 public: 386 386 Getter _getter; … … 395 395 typedef P (C::*Getter)() const; 396 396 typedef void (C::*Setter)( P ); 397 397 398 398 GLenumSerializer( const char* name, P def, Getter gf, Setter sf ) 399 399 : ParentType(name, def), _getter(gf), _setter(sf) {} 400 400 401 401 virtual bool read( InputStream& is, osg::Object& obj ) 402 402 { … … 415 415 return true; 416 416 } 417 417 418 418 virtual bool write( OutputStream& os, const osg::Object& obj ) 419 419 { … … 430 430 return true; 431 431 } 432 432 433 433 public: 434 434 Getter _getter; … … 443 443 typedef const std::string& (C::*Getter)() const; 444 444 typedef void (C::*Setter)( const std::string& ); 445 445 446 446 StringSerializer( const char* name, const std::string& def, Getter gf, Setter sf ) 447 447 : ParentType(name, def), _getter(gf), _setter(sf) {} 448 448 449 449 virtual bool read( InputStream& is, osg::Object& obj ) 450 450 { … … 465 465 return true; 466 466 } 467 467 468 468 virtual bool write( OutputStream& os, const osg::Object& obj ) 469 469 { … … 482 482 return true; 483 483 } 484 484 485 485 public: 486 486 Getter _getter; … … 495 495 typedef const P* (C::*Getter)() const; 496 496 typedef void (C::*Setter)( P* ); 497 497 498 498 ObjectSerializer( const char* name, P* def, Getter gf, Setter sf ) 499 499 : ParentType(name, def), _getter(gf), _setter(sf) {} 500 500 501 501 virtual bool read( InputStream& is, osg::Object& obj ) 502 502 { … … 527 527 return true; 528 528 } 529 529 530 530 virtual bool write( OutputStream& os, const osg::Object& obj ) 531 531 { … … 551 551 return true; 552 552 } 553 553 554 554 public: 555 555 Getter _getter; … … 564 564 typedef const P* (C::*Getter)() const; 565 565 typedef void (C::*Setter)( P* ); 566 566 567 567 ImageSerializer( const char* name, P* def, Getter gf, Setter sf ) 568 568 : ParentType(name, def), _getter(gf), _setter(sf) {} 569 569 570 570 virtual bool read( InputStream& is, osg::Object& obj ) 571 571 { … … 596 596 return true; 597 597 } 598 598 599 599 virtual bool write( OutputStream& os, const osg::Object& obj ) 600 600 { … … 620 620 return true; 621 621 } 622 622 623 623 public: 624 624 Getter _getter; … … 633 633 typedef P (C::*Getter)() const; 634 634 typedef B (C::*Setter)( P ); 635 635 636 636 EnumSerializer( const char* name, P def, Getter gf, Setter sf ) 637 637 : ParentType(name, def), _getter(gf), _setter(sf) {} 638 638 639 639 void add( const char* str, P value ) 640 640 { _lookup.add(str, static_cast<IntLookup::Value>(value)); } 641 641 642 642 P getValue( const char* str ) 643 643 { return static_cast<P>(_lookup.getValue(str)); } 644 644 645 645 const std::string& getString( P value ) 646 646 { return _lookup.getString(static_cast<IntLookup::Value>(value)); } 647 647 648 648 virtual bool read( InputStream& is, osg::Object& obj ) 649 649 { … … 663 663 return true; 664 664 } 665 665 666 666 virtual bool write( osgDB::OutputStream& os, const osg::Object& obj ) 667 667 { … … 678 678 return true; 679 679 } 680 680 681 681 public: 682 682 Getter _getter; 683 683 Setter _setter; 684 684 685 685 protected: 686 686 IntLookup _lookup; … … 696 696 typedef const P& (C::*Getter)() const; 697 697 typedef void (C::*Setter)( const P& ); 698 698 699 699 ListSerializer( const char* name, Getter gf, Setter sf ) 700 700 : _name(name), _getter(gf), _setter(sf) {} 701 701 702 702 virtual const std::string& getName() const { return _name; } 703 703 … … 736 736 return true; 737 737 } 738 738 739 739 virtual bool write( OutputStream& os, const osg::Object& obj ) 740 740 { … … 764 764 return true; 765 765 } 766 766 767 767 public: 768 768 std::string _name; … … 810 810 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, unsigned int >( \ 811 811 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_UINT ) 812 812 813 813 #define ADD_GLINT_SERIALIZER(PROP, DEF) \ 814 814 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, GLint >( \
