15#ifndef OSGDB__SERIALIZER
16#define OSGDB__SERIALIZER
36 #define OBJECT_CAST static_cast
55 <<
" and new string: " << str << std::endl;
61 void add2(
const char* str,
const char* newStr,
Value value) {
66 <<
" and new strings: " << str <<
" and " << newStr << std::endl;
79 std::stringstream stream;
80 stream << str; stream >> value;
93 std::stringstream stream;
94 stream << value; stream >> str;
121#define BEGIN_USER_TABLE(NAME, CLASS) \
122 static void add_user_value_func_##NAME(osgDB::IntLookup*); \
123 static osgDB::UserLookupTableProxy s_user_lookup_table_##NAME(&add_user_value_func_##NAME); \
124 static void add_user_value_func_##NAME(osgDB::IntLookup* lookup) { typedef CLASS MyClass
125#define ADD_USER_VALUE(VALUE) lookup->add(#VALUE, MyClass::VALUE)
126#define END_USER_TABLE() }
128#define USER_READ_FUNC(NAME, FUNCNAME) \
129 static int FUNCNAME(osgDB::InputStream& is) { \
130 int value; if (is.isBinary()) is >> value; \
131 else { std::string str; is >> str; \
132 value = (s_user_lookup_table_##NAME)._lookup.getValue(str.c_str()); } \
135#define USER_WRITE_FUNC(NAME, FUNCNAME) \
136 static void FUNCNAME(osgDB::OutputStream& os, int value) { \
137 if (os.isBinary()) os << value; \
138 else os << (s_user_lookup_table_##NAME)._lookup.getString(value); } \
174 virtual const std::string&
getName()
const = 0;
215 bool ok =
false;
is >> ok;
216 if ( !ok )
return true;
229 bool ok = (*_checker)(object);
233 if ( !ok )
return true;
237 if ( !ok )
return true;
271template<
typename C,
typename P>
314 if (
_useHex ) {
os << std::hex << std::showbase; }
316 if (
_useHex )
os << std::dec << std::noshowbase;
330template<
typename C,
typename P>
433 if (
is.getUseFloatMatrix() )
451template<
typename C,
typename P>
469 GLenum value;
is >> value;
470 (
object.*
_setter)(
static_cast<P>(value) );
475 (
object.*
_setter)(
static_cast<P>(value.get()) );
483 const P value = (
object.*
_getter)();
505 typedef const std::string& (
C::*
Getter)()
const;
524 is.readWrappedString( value );
525 if ( !value.empty() && (
_setter!=0) )
534 const std::string& value = (
object.*
_getter)();
542 os.writeWrappedString( value );
553template<
typename C,
typename P>
585 else if (
is.matchString(
_name) )
590 is >>
is.BEGIN_BRACKET;
593 is >>
is.END_BRACKET;
602 const P* value = (
object.*
_getter)();
609 os.writeObject( value );
617 os <<
os.BEGIN_BRACKET << std::endl;
618 os.writeObject( value );
619 os <<
os.END_BRACKET;
633template<
typename C,
typename P>
660 P* value =
dynamic_cast<P*
>(
image.get() );
669 is >>
is.BEGIN_BRACKET;
671 P* value =
dynamic_cast<P*
>(
image.get() );
673 is >>
is.END_BRACKET;
682 const P* value = (
object.*
_getter)();
687 os.writeImage( value );
694 os <<
os.BEGIN_BRACKET << std::endl;
695 os.writeImage( value );
696 os <<
os.END_BRACKET;
708template<
typename C,
typename P,
typename B>
723 void add(
const char* str,
P value )
739 (
object.*
_setter)(
static_cast<P>(value) );
743 std::string str;
is >> str;
752 const P value = (
object.*
_getter)();
773template<
typename C,
typename P>
791 unsigned int size = 0;
796 for (
unsigned int i=0; i<size; ++i )
800 list.push_back( value );
804 else if (
is.matchString(
_name) )
807 if ( size>0 )
is >>
is.BEGIN_BRACKET;
808 for (
unsigned int i=0; i<size; ++i )
812 list.push_back( value );
816 is >>
is.END_BRACKET;
827 unsigned int size = (
unsigned int)
list.size();
839 os <<
os.PROPERTY((
_name).c_str()) << size <<
os.BEGIN_BRACKET << std::endl;
846 os <<
os.END_BRACKET << std::endl;
884template<
typename C,
typename P>
906 return static_cast<unsigned int>(
list.size());
936 if (index>=
list.size())
list.resize(index+1);
943 if (index>=
list.size())
list.resize(index+1);
950 if (index>=
list.size())
return 0;
951 else return &
list[index];
957 if (index>=
list.size())
return 0;
958 else return &
list[index];
964 unsigned int size = 0;
970 for (
unsigned int i=0; i<
size; ++i )
974 list.push_back( value );
978 else if (
is.matchString(
_name) )
982 if (
size>0 )
is >>
is.BEGIN_BRACKET;
983 for (
unsigned int i=0; i<
size; ++i )
987 list.push_back( value );
991 is >>
is.END_BRACKET;
1003 if (
os.isBinary() )
1014 os <<
os.PROPERTY((
_name).c_str()) <<
size <<
os.BEGIN_BRACKET << std::endl;
1026 os << (*itr);
os << std::endl;
1040 os <<
os.END_BRACKET << std::endl;
1071 return static_cast<unsigned int>(
list.size());
1096 if (index>=
list.size())
list.resize(index+1);
1102 if (index>=
list.size())
list.resize(index+1);
1108 if (index>=
list.size())
return 0;
1109 else return &
list[index];
1115 if (index>=
list.size())
return 0;
1116 else return &
list[index];
1122 unsigned int size = 0;
1123 if (
is.isBinary() )
1127 for (
unsigned int i=0; i<
size; ++i )
1131 list.push_back( value );
1134 else if (
is.matchString(
_name) )
1138 if (
size>0 )
is >>
is.BEGIN_BRACKET;
1139 for (
unsigned int i=0; i<
size; ++i )
1143 list.push_back( value );
1147 is >>
is.END_BRACKET;
1157 if (
os.isBinary() )
1168 os <<
os.PROPERTY((
_name).c_str()) <<
size <<
os.BEGIN_BRACKET << std::endl;
1180 os << (*itr);
os << std::endl;
1194 os <<
os.END_BRACKET << std::endl;
1229 virtual bool valid()
const {
return false; }
1230 virtual const void*
getKey()
const {
return 0; }
1275template<
typename C,
typename P>
1322 if (
itr==map.end())
return 0;
1323 else return &(
itr->second);
1384 unsigned int size = 0;
1386 if (
is.isBinary() )
1389 for (
unsigned int i=0; i<
size; ++i )
1398 else if (
is.matchString(
_name) )
1403 is >>
is.BEGIN_BRACKET;
1404 for (
unsigned int i=0; i<
size; ++i )
1411 is >>
is.END_BRACKET;
1422 unsigned int size = (
unsigned int)map.size();
1423 if (
os.isBinary() )
1434 os <<
os.PROPERTY((
_name).c_str()) <<
size <<
os.BEGIN_BRACKET << std::endl;
1437 os <<
itr->first <<
itr->second;
os << std::endl;
1439 os <<
os.END_BRACKET << std::endl;
1451template<
typename C,
typename P=
unsigned int>
1462 void add(
const char* str,
P value )
1476 if (
is.isBinary() )
1478 if (
is.getFileVersion()<123)
1480 bool ok =
false;
is >> ok;
1481 if ( !ok )
return true;
1497 for (
unsigned int i=0; i<
maskList.size(); ++i )
1507 const P mask = (
object.*
_getter)();
1509 if (
os.isBinary() )
1511 if (
os.getFileVersion()<123)
1527 for( osgDB::IntLookup::ValueToString::const_iterator
itr =
v2sm.begin() ;
itr !=
v2sm.end() ;
itr++)
1528 if( (mask &
itr->first) != 0 )
1548#define ADD_SERIALIZER(S) \
1549 wrapper->addSerializer( (S) )
1551#define ADD_USER_SERIALIZER(PROP) \
1552 wrapper->addSerializer( new osgDB::UserSerializer<MyClass>( \
1553 #PROP, &check##PROP, &read##PROP, &write##PROP), osgDB::BaseSerializer::RW_USER )
1555#define ADD_BOOL_SERIALIZER(PROP, DEF) \
1556 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, bool >( \
1557 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_BOOL )
1559#define ADD_CHAR_SERIALIZER(PROP, DEF) \
1560 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, char >( \
1561 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_CHAR )
1563#define ADD_UCHAR_SERIALIZER(PROP, DEF) \
1564 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, unsigned char >( \
1565 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_UCHAR )
1567#define ADD_SHORT_SERIALIZER(PROP, DEF) \
1568 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, short >( \
1569 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_SHORT )
1571#define ADD_USHORT_SERIALIZER(PROP, DEF) \
1572 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, unsigned short >( \
1573 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_USHORT )
1575#define ADD_HEXSHORT_SERIALIZER(PROP, DEF) \
1576 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, unsigned short >( \
1577 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP, true), osgDB::BaseSerializer::RW_USHORT )
1579#define ADD_INT_SERIALIZER(PROP, DEF) \
1580 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, int >( \
1581 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_INT )
1583#define ADD_INT_SERIALIZER_NO_SET(PROP, DEF) \
1584 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, int >( \
1585 #PROP, DEF, &MyClass::get##PROP, 0), osgDB::BaseSerializer::RW_INT )
1587#define ADD_UINT_SERIALIZER(PROP, DEF) \
1588 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, unsigned int >( \
1589 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_UINT )
1591#define ADD_UINT_SERIALIZER_NO_SET(PROP, DEF) \
1592 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, unsigned int >( \
1593 #PROP, DEF, &MyClass::get##PROP, 0), osgDB::BaseSerializer::RW_UINT )
1595#define ADD_GLINT_SERIALIZER(PROP, DEF) \
1596 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, GLint >( \
1597 #PROP, ((int)(DEF)), &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_INT )
1599#define ADD_HEXINT_SERIALIZER(PROP, DEF) \
1600 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, unsigned int >( \
1601 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP, true), osgDB::BaseSerializer::RW_UINT )
1603#define ADD_FLOAT_SERIALIZER(PROP, DEF) \
1604 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, float >( \
1605 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_FLOAT )
1607#define ADD_DOUBLE_SERIALIZER(PROP, DEF) \
1608 wrapper->addSerializer( new osgDB::PropByValSerializer< MyClass, double >( \
1609 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_DOUBLE )
1611#define ADD_REF_BOOL_SERIALIZER(PROP, DEF) \
1612 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, bool >( \
1613 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_BOOL )
1615#define ADD_REF_CHAR_SERIALIZER(PROP, DEF) \
1616 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, char >( \
1617 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_CHAR )
1619#define ADD_REF_UCHAR_SERIALIZER(PROP, DEF) \
1620 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, unsigned char >( \
1621 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_UCHAR )
1623#define ADD_REF_SHORT_SERIALIZER(PROP, DEF) \
1624 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, short >( \
1625 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_SHORT )
1627#define ADD_REF_USHORT_SERIALIZER(PROP, DEF) \
1628 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, unsigned short >( \
1629 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_USHORT )
1631#define ADD_REF_HEXSHORT_SERIALIZER(PROP, DEF) \
1632 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, unsigned short >( \
1633 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP, true), osgDB::BaseSerializer::RW_USHORT )
1635#define ADD_REF_INT_SERIALIZER(PROP, DEF) \
1636 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, int >( \
1637 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_INT )
1639#define ADD_REF_UINT_SERIALIZER(PROP, DEF) \
1640 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, unsigned int >( \
1641 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_UINT )
1643#define ADD_REF_GLINT_SERIALIZER(PROP, DEF) \
1644 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, GLint >( \
1645 #PROP, ((int)(DEF)), &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_INT )
1647#define ADD_REF_HEXINT_SERIALIZER(PROP, DEF) \
1648 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, unsigned int >( \
1649 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP, true), osgDB::BaseSerializer::RW_UINT )
1651#define ADD_REF_FLOAT_SERIALIZER(PROP, DEF) \
1652 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, float >( \
1653 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_FLOAT )
1655#define ADD_REF_DOUBLE_SERIALIZER(PROP, DEF) \
1656 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, double >( \
1657 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_DOUBLE )
1660#define ADD_VEC2B_SERIALIZER(PROP, DEF) \
1661 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2b >( \
1662 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2B )
1664#define ADD_VEC2UB_SERIALIZER(PROP, DEF) \
1665 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2ub >( \
1666 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2UB )
1668#define ADD_VEC2S_SERIALIZER(PROP, DEF) \
1669 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2s >( \
1670 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2S )
1672#define ADD_VEC2US_SERIALIZER(PROP, DEF) \
1673 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2us >( \
1674 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2US )
1676#define ADD_VEC2I_SERIALIZER(PROP, DEF) \
1677 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2i >( \
1678 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2I )
1680#define ADD_VEC2UI_SERIALIZER(PROP, DEF) \
1681 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2ui >( \
1682 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2UI )
1684#define ADD_VEC2F_SERIALIZER(PROP, DEF) \
1685 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2f >( \
1686 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2F )
1688#define ADD_VEC2D_SERIALIZER(PROP, DEF) \
1689 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec2d >( \
1690 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC2D )
1692#define ADD_VEC2_SERIALIZER(PROP, DEF) ADD_VEC2F_SERIALIZER(PROP, DEF)
1695#define ADD_VEC3B_SERIALIZER(PROP, DEF) \
1696 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3b >( \
1697 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3B )
1699#define ADD_VEC3UB_SERIALIZER(PROP, DEF) \
1700 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3ub >( \
1701 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3UB )
1703#define ADD_VEC3S_SERIALIZER(PROP, DEF) \
1704 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3s >( \
1705 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3S )
1707#define ADD_VEC3US_SERIALIZER(PROP, DEF) \
1708 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3us >( \
1709 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3US )
1711#define ADD_VEC3I_SERIALIZER(PROP, DEF) \
1712 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3i >( \
1713 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3I )
1715#define ADD_VEC3UI_SERIALIZER(PROP, DEF) \
1716 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3ui >( \
1717 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3UI )
1719#define ADD_VEC3F_SERIALIZER(PROP, DEF) \
1720 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3f >( \
1721 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3F )
1723#define ADD_VEC3D_SERIALIZER(PROP, DEF) \
1724 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec3d >( \
1725 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC3D )
1727#define ADD_VEC3_SERIALIZER(PROP, DEF) ADD_VEC3F_SERIALIZER(PROP, DEF)
1729#define ADD_VEC4B_SERIALIZER(PROP, DEF) \
1730 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4b >( \
1731 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4B )
1733#define ADD_VEC4UB_SERIALIZER(PROP, DEF) \
1734 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4ub >( \
1735 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4UB )
1737#define ADD_VEC4S_SERIALIZER(PROP, DEF) \
1738 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4s >( \
1739 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4S )
1741#define ADD_VEC4US_SERIALIZER(PROP, DEF) \
1742 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4us >( \
1743 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4US )
1745#define ADD_VEC4I_SERIALIZER(PROP, DEF) \
1746 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4i >( \
1747 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4I )
1749#define ADD_VEC4UI_SERIALIZER(PROP, DEF) \
1750 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4ui >( \
1751 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4UI )
1753#define ADD_VEC4F_SERIALIZER(PROP, DEF) \
1754 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4f >( \
1755 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4F )
1757#define ADD_VEC4D_SERIALIZER(PROP, DEF) \
1758 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Vec4d >( \
1759 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_VEC4D )
1761#define ADD_VEC4_SERIALIZER(PROP, DEF) ADD_VEC4F_SERIALIZER(PROP, DEF)
1763#define ADD_QUAT_SERIALIZER(PROP, DEF) \
1764 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Quat >( \
1765 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_QUAT )
1767#define ADD_PLANE_SERIALIZER(PROP, DEF) \
1768 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Plane >( \
1769 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_PLANE )
1771#define ADD_MATRIXF_SERIALIZER(PROP, DEF) \
1772 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Matrixf >( \
1773 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_MATRIXF )
1775#define ADD_MATRIXD_SERIALIZER(PROP, DEF) \
1776 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::Matrixd >( \
1777 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_MATRIXD )
1779#define ADD_MATRIX_SERIALIZER(PROP, DEF) \
1780 wrapper->addSerializer( new osgDB::MatrixSerializer< MyClass >( \
1781 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_MATRIX )
1784#define ADD_BOUNDINGBOXF_SERIALIZER(PROP, DEF) \
1785 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::BoundingBoxf >( \
1786 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_BOUNDINGBOXF )
1788#define ADD_BOUNDINGBOXD_SERIALIZER(PROP, DEF) \
1789 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::BoundingBoxd >( \
1790 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_BOUNDINGBOXD )
1792#define ADD_BOUNDINGSPHEREF_SERIALIZER(PROP, DEF) \
1793 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::BoundingSpheref >( \
1794 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_BOUNDINGSPHEREF )
1796#define ADD_BOUNDINGSPHERED_SERIALIZER(PROP, DEF) \
1797 wrapper->addSerializer( new osgDB::PropByRefSerializer< MyClass, osg::BoundingSphered >( \
1798 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_BOUNDINGSPHERED )
1801#define ADD_GLENUM_SERIALIZER(PROP, TYPE, DEF) \
1802 wrapper->addSerializer( new osgDB::GLenumSerializer< MyClass, TYPE >( \
1803 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_GLENUM )
1805#define ADD_GLENUM_SERIALIZER_NO_SET(PROP, TYPE, DEF) \
1806 wrapper->addSerializer( new osgDB::GLenumSerializer< MyClass, TYPE >( \
1807 #PROP, DEF, &MyClass::get##PROP, 0), osgDB::BaseSerializer::RW_GLENUM )
1809#define ADD_STRING_SERIALIZER(PROP, DEF) \
1810 wrapper->addSerializer( new osgDB::StringSerializer< MyClass >( \
1811 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_STRING )
1813#define ADD_OBJECT_SERIALIZER(PROP, TYPE, DEF) \
1814 wrapper->addSerializer( new osgDB::ObjectSerializer< MyClass, TYPE >( \
1815 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_OBJECT )
1817#define ADD_OBJECT_SERIALIZER_NO_SET(PROP, TYPE, DEF) \
1818 wrapper->addSerializer( new osgDB::ObjectSerializer< MyClass, TYPE >( \
1819 #PROP, DEF, &MyClass::get##PROP, 0), osgDB::BaseSerializer::RW_OBJECT )
1821#define ADD_IMAGE_SERIALIZER(PROP, TYPE, DEF) \
1822 wrapper->addSerializer( new osgDB::ImageSerializer< MyClass, TYPE >( \
1823 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_IMAGE )
1825#define ADD_LIST_SERIALIZER(PROP, TYPE) \
1826 wrapper->addSerializer( new osgDB::ListSerializer< MyClass, TYPE >( \
1827 #PROP, &MyClass::get##PROP, &MyClass::set##PROP), osgDB::BaseSerializer::RW_LIST )
1830#define ADD_VECTOR_SERIALIZER(PROP, TYPE, ELEMENTTYPE, NUMELEMENTSONROW) \
1831 wrapper->addSerializer( new osgDB::VectorSerializer< MyClass, TYPE >( \
1832 #PROP, &MyClass::get##PROP, &MyClass::get##PROP, &MyClass::set##PROP, ELEMENTTYPE, NUMELEMENTSONROW), osgDB::BaseSerializer::RW_VECTOR )
1834#define ADD_ISAVECTOR_SERIALIZER(PROP, ELEMENTTYPE, NUMELEMENTSONROW) \
1835 wrapper->addSerializer( new osgDB::IsAVectorSerializer< MyClass >( #PROP, ELEMENTTYPE, NUMELEMENTSONROW), osgDB::BaseSerializer::RW_VECTOR )
1837#define BEGIN_ENUM_SERIALIZER(PROP, DEF) \
1838 { typedef osgDB::EnumSerializer<MyClass, MyClass::PROP, void> MySerializer; \
1839 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1840 #PROP, MyClass::DEF, &MyClass::get##PROP, &MyClass::set##PROP)
1842#define BEGIN_ENUM_SERIALIZER2(PROP, TYPE, DEF) \
1843 { typedef osgDB::EnumSerializer<MyClass, TYPE, void> MySerializer; \
1844 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1845 #PROP, MyClass::DEF, &MyClass::get##PROP, &MyClass::set##PROP)
1847#define BEGIN_ENUM_SERIALIZER3(PROP, DEF) \
1848 { typedef osgDB::EnumSerializer<MyClass, MyClass::PROP, bool> MySerializer; \
1849 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1850 #PROP, MyClass::DEF, &MyClass::get##PROP, &MyClass::set##PROP)
1852#define BEGIN_ENUM_SERIALIZER4(PROPERTIES_CLASS, PROP, DEF) \
1853 { typedef osgDB::EnumSerializer<MyClass, PROPERTIES_CLASS::PROP, void> MySerializer; \
1854 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1855 #PROP, PROPERTIES_CLASS::DEF, &MyClass::get##PROP, &MyClass::set##PROP)
1857#define BEGIN_ENUM_SERIALIZER_NO_SET(PROP, DEF) \
1858 { typedef osgDB::EnumSerializer<MyClass, MyClass::PROP, void> MySerializer; \
1859 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1860 #PROP, MyClass::DEF, &MyClass::get##PROP, 0)
1862#define ADD_ENUM_VALUE(VALUE) \
1863 serializer->add(#VALUE, MyClass::VALUE)
1865#define ADD_ENUM_CLASS_VALUE(CLASS, VALUE) \
1866 serializer->add(#VALUE, CLASS::VALUE)
1868#define END_ENUM_SERIALIZER() \
1869 wrapper->addSerializer(serializer.get(), osgDB::BaseSerializer::RW_ENUM); }
1872#define BEGIN_BITFLAGS_SERIALIZER(PROP, DEF) \
1873 { typedef osgDB::BitFlagsSerializer<MyClass> MySerializer; \
1874 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1875 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP)
1877#define BEGIN_UINT_BITFLAGS_SERIALIZER(PROP, DEF) \
1878 { typedef osgDB::BitFlagsSerializer<MyClass, unsigned int> MySerializer; \
1879 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1880 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP)
1882#define BEGIN_INT_BITFLAGS_SERIALIZER(PROP, DEF) \
1883 { typedef osgDB::BitFlagsSerializer<MyClass, int> MySerializer; \
1884 osg::ref_ptr<MySerializer> serializer = new MySerializer( \
1885 #PROP, DEF, &MyClass::get##PROP, &MyClass::set##PROP)
1887#define ADD_BITFLAG_VALUE(VALUE_NAME, VALUE) \
1888 serializer->add(#VALUE_NAME, VALUE)
1890#define END_BITFLAGS_SERIALIZER() \
1891 wrapper->addSerializer(serializer.get(), osgDB::BaseSerializer::RW_INT); }
1894#define UPDATE_TO_VERSION(VER) \
1895 wrapper->setUpdatedVersion( (VER) );
1897#define UPDATE_TO_VERSION_SCOPED(VER) \
1898 osgDB::UpdateWrapperVersionProxy uwvp(wrapper, (VER));
1900#define ADDED_ASSOCIATE(STR) \
1901 wrapper->markAssociateAsAdded( STR );
1903#define REMOVED_ASSOCIATE(STR) \
1904 wrapper->markAssociateAsRemoved( STR );
1906#define REMOVE_SERIALIZER(PROP) \
1907 wrapper->markSerializerAsRemoved( #PROP );
1909#define ADD_MAP_SERIALIZER(PROP, TYPE, KEYTYPE, ELEMENTTYPE) \
1910 wrapper->addSerializer( new osgDB::MapSerializer< MyClass, TYPE >( \
1911 #PROP, &MyClass::get##PROP, &MyClass::get##PROP, &MyClass::set##PROP, KEYTYPE, ELEMENTTYPE), osgDB::BaseSerializer::RW_MAP )
1913#define ADD_METHOD_OBJECT( METHODNAME, METHODOBJECTCLASS ) wrapper->addMethodObject(METHODNAME, new METHODOBJECTCLASS());
1915#define ADD_METHOD(METHODNAME) \
1917 struct MethodCaller : public osgDB::MethodObject \
1919 virtual bool run(void* objectPtr, osg::Parameters&, osg::Parameters&) const \
1921 MyClass* obj = reinterpret_cast<MyClass*>(objectPtr); \
1922 obj->METHODNAME(); \
1926 wrapper->addMethodObject(#METHODNAME, new MethodCaller()); \
1930#define SET_USAGE(VALUE) wrapper->getLastSerializer()->setUsage(VALUE)
#define GLENUM(value)
Definition DataTypes:101
#define DEF_GLENUM(var)
Definition DataTypes:102
Definition Serializer:141
BaseSerializer(int usage)
Definition Serializer:167
int _usage
Definition Serializer:196
virtual bool get(const osg::Object &, void *)
Definition Serializer:170
bool supportsSet() const
Definition Serializer:191
virtual bool write(OutputStream &, const osg::Object &)=0
int getUsage() const
Definition Serializer:179
int _firstVersion
Definition Serializer:194
int _lastVersion
Definition Serializer:195
virtual const std::string & getName() const =0
virtual bool read(InputStream &, osg::Object &)=0
bool supportsGetSet() const
Definition Serializer:189
virtual bool set(osg::Object &, void *)
Definition Serializer:169
bool supportsGet() const
Definition Serializer:190
bool supportsReadWrite() const
Definition Serializer:188
Usage
Definition Serializer:159
@ READ_WRITE_PROPERTY
Definition Serializer:160
@ SET_PROPERTY
Definition Serializer:162
@ GET_PROPERTY
Definition Serializer:161
@ GET_SET_PROPERTY
Definition Serializer:163
void setUsage(int usage)
Definition Serializer:178
Type
Definition Serializer:145
@ RW_UINT
Definition Serializer:147
@ RW_VEC4UB
Definition Serializer:152
@ RW_VEC3I
Definition Serializer:151
@ RW_VEC3B
Definition Serializer:151
@ RW_VEC2B
Definition Serializer:150
@ RW_DOUBLE
Definition Serializer:147
@ RW_BOUNDINGSPHEREF
Definition Serializer:154
@ RW_VEC4D
Definition Serializer:148
@ RW_VEC2F
Definition Serializer:148
@ RW_BOUNDINGBOXF
Definition Serializer:153
@ RW_MATRIXF
Definition Serializer:149
@ RW_USHORT
Definition Serializer:147
@ RW_OBJECT
Definition Serializer:146
@ RW_ENUM
Definition Serializer:149
@ RW_MAP
Definition Serializer:155
@ RW_SHORT
Definition Serializer:147
@ RW_QUAT
Definition Serializer:148
@ RW_VEC2UI
Definition Serializer:150
@ RW_VEC4US
Definition Serializer:152
@ RW_PLANE
Definition Serializer:148
@ RW_VEC3UB
Definition Serializer:151
@ RW_VEC3US
Definition Serializer:151
@ RW_VEC4B
Definition Serializer:152
@ RW_VECTOR
Definition Serializer:155
@ RW_VEC4F
Definition Serializer:148
@ RW_BOUNDINGBOXD
Definition Serializer:153
@ RW_VEC2D
Definition Serializer:148
@ RW_VEC3UI
Definition Serializer:151
@ RW_VEC3D
Definition Serializer:148
@ RW_MATRIX
Definition Serializer:149
@ RW_VEC4S
Definition Serializer:152
@ RW_VEC2US
Definition Serializer:150
@ RW_IMAGE
Definition Serializer:146
@ RW_VEC4I
Definition Serializer:152
@ RW_MATRIXD
Definition Serializer:149
@ RW_FLOAT
Definition Serializer:147
@ RW_VEC3S
Definition Serializer:151
@ RW_UCHAR
Definition Serializer:147
@ RW_LIST
Definition Serializer:146
@ RW_BOUNDINGSPHERED
Definition Serializer:154
@ RW_INT
Definition Serializer:147
@ RW_VEC2I
Definition Serializer:150
@ RW_UNDEFINED
Definition Serializer:146
@ RW_VEC4UI
Definition Serializer:152
@ RW_VEC2S
Definition Serializer:150
@ RW_GLENUM
Definition Serializer:149
@ RW_CHAR
Definition Serializer:147
@ RW_VEC2UB
Definition Serializer:150
@ RW_STRING
Definition Serializer:149
@ RW_BOOL
Definition Serializer:147
@ RW_USER
Definition Serializer:146
@ RW_VEC3F
Definition Serializer:148
virtual IntLookup * getIntLookup()
Definition Serializer:176
void setUsage(bool hasGetter, bool hasSetter)
Definition Serializer:181
Definition Serializer:1453
void(C::* Setter)(P)
Definition Serializer:1457
Getter _getter
Definition Serializer:1540
virtual bool write(osgDB::OutputStream &os, const osg::Object &obj)
Definition Serializer:1504
BitFlagsSerializer(const char *name, P def, Getter gf, Setter sf)
Definition Serializer:1459
P getValue(const char *str)
Definition Serializer:1467
P(C::* Getter)() const
Definition Serializer:1456
TemplateSerializer< P > ParentType
Definition Serializer:1455
Setter _setter
Definition Serializer:1541
osgDB::IntLookup _lookup
Definition Serializer:1544
virtual bool read(osgDB::InputStream &is, osg::Object &obj)
Definition Serializer:1473
void add(const char *str, P value)
Definition Serializer:1462
const std::string & getString(P value)
Definition Serializer:1470
Definition Serializer:710
virtual IntLookup * getIntLookup()
Definition Serializer:721
Setter _setter
Definition Serializer:766
IntLookup _lookup
Definition Serializer:769
EnumSerializer(const char *name, P def, Getter gf, Setter sf)
Definition Serializer:716
B(C::* Setter)(P)
Definition Serializer:714
TemplateSerializer< P > ParentType
Definition Serializer:712
void add(const char *str, P value)
Definition Serializer:723
P(C::* Getter)() const
Definition Serializer:713
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:732
Getter _getter
Definition Serializer:765
P getValue(const char *str)
Definition Serializer:726
const std::string & getString(P value)
Definition Serializer:729
virtual bool write(osgDB::OutputStream &os, const osg::Object &obj)
Definition Serializer:749
Definition Serializer:453
TemplateSerializer< P > ParentType
Definition Serializer:455
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:480
Getter _getter
Definition Serializer:496
P(C::* Getter)() const
Definition Serializer:456
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:464
Setter _setter
Definition Serializer:497
void(C::* Setter)(P)
Definition Serializer:457
GLenumSerializer(const char *name, P def, Getter gf, Setter sf)
Definition Serializer:459
Definition Serializer:635
TemplateSerializer< P * > ParentType
Definition Serializer:637
virtual bool set(osg::Object &obj, void *value)
Definition Serializer:647
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:650
virtual bool get(const osg::Object &obj, void *value)
Definition Serializer:648
ImageSerializer(const char *name, P *def, Getter gf, Setter sf)
Definition Serializer:641
const P *(C::* Getter)() const
Definition Serializer:638
void(C::* Setter)(P *)
Definition Serializer:639
Getter _getter
Definition Serializer:704
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:679
Setter _setter
Definition Serializer:705
unsigned int size() const
Definition Serializer:47
ValueToString _valueToString
Definition Serializer:109
Value getValue(const char *str)
Definition Serializer:73
ValueToString & getValueToString()
Definition Serializer:104
const ValueToString & getValueToString() const
Definition Serializer:105
IntLookup()
Definition Serializer:46
StringToValue & getStringToValue()
Definition Serializer:101
std::map< std::string, Value > StringToValue
Definition Serializer:43
void add(const char *str, Value value)
Definition Serializer:49
StringToValue _stringToValue
Definition Serializer:108
int Value
Definition Serializer:42
void add2(const char *str, const char *newStr, Value value)
Definition Serializer:61
const StringToValue & getStringToValue() const
Definition Serializer:102
const std::string & getString(Value value)
Definition Serializer:87
std::map< Value, std::string > ValueToString
Definition Serializer:44
Definition Serializer:1056
virtual void addElement(osg::Object &obj, void *ptr) const
Definition Serializer:1088
virtual void * getElement(osg::Object &obj, unsigned int index) const
Definition Serializer:1105
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:1153
virtual const void * getElement(const osg::Object &obj, unsigned int index) const
Definition Serializer:1112
virtual void insertElement(osg::Object &obj, unsigned int index, void *ptr) const
Definition Serializer:1093
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:1119
virtual const std::string & getName() const
Definition Serializer:1066
unsigned int _numElementsOnRow
Definition Serializer:1201
virtual void resize(osg::Object &obj, unsigned int numElements) const
Definition Serializer:1073
C::value_type ValueType
Definition Serializer:1058
virtual void reserve(osg::Object &obj, unsigned int numElements) const
Definition Serializer:1078
std::string _name
Definition Serializer:1200
IsAVectorSerializer(const char *name, BaseSerializer::Type elementType, unsigned int numElementsOnRow)
Definition Serializer:1061
virtual void setElement(osg::Object &obj, unsigned int index, void *ptr) const
Definition Serializer:1099
virtual void clear(osg::Object &obj) const
Definition Serializer:1083
virtual unsigned int size(const osg::Object &obj) const
Definition Serializer:1068
C::const_iterator ConstIterator
Definition Serializer:1059
Definition Serializer:775
Setter _setter
Definition Serializer:854
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:823
P::value_type ValueType
Definition Serializer:777
void(C::* Setter)(const P &)
Definition Serializer:780
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:788
Getter _getter
Definition Serializer:853
virtual const std::string & getName() const
Definition Serializer:786
const P &(C::* Getter)() const
Definition Serializer:779
P::const_iterator ConstIterator
Definition Serializer:778
ListSerializer(const char *name, Getter gf, Setter sf)
Definition Serializer:782
std::string _name
Definition Serializer:852
Definition Serializer:1243
unsigned int getKeySize() const
Definition Serializer:1252
Type _elementType
Definition Serializer:1270
virtual unsigned int size(const osg::Object &) const
Definition Serializer:1261
Type _keyType
Definition Serializer:1267
MapBaseSerializer(BaseSerializer::Type keyType, unsigned int keySize, BaseSerializer::Type elementType, unsigned int elementSize)
Definition Serializer:1246
unsigned int getElementSize() const
Definition Serializer:1255
Type getElementType() const
Definition Serializer:1254
virtual void * getElement(osg::Object &, void *) const
Definition Serializer:1259
virtual void clear(osg::Object &) const
Definition Serializer:1257
Type getKeyType() const
Definition Serializer:1251
unsigned int _keySize
Definition Serializer:1268
virtual void setElement(osg::Object &, void *, void *) const
Definition Serializer:1258
virtual MapIteratorObject * createIterator(osg::Object &) const
Definition Serializer:1263
virtual MapIteratorObject * createReverseIterator(osg::Object &) const
Definition Serializer:1264
unsigned int _elementSize
Definition Serializer:1271
virtual const void * getElement(const osg::Object &, void *) const
Definition Serializer:1260
Definition Serializer:1205
virtual void * getElement() const
Definition Serializer:1231
META_Object(osgDB, MapIteratorObject)
MapIteratorObject(BaseSerializer::Type keyType, unsigned int keySize, BaseSerializer::Type elementType, unsigned int elementSize)
Definition Serializer:1211
BaseSerializer::Type _elementType
Definition Serializer:1238
virtual bool advance()
Definition Serializer:1228
MapIteratorObject(const MapIteratorObject &rhs, const osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY)
Definition Serializer:1215
BaseSerializer::Type getElementType() const
Definition Serializer:1225
unsigned int _keySize
Definition Serializer:1236
virtual const void * getKey() const
Definition Serializer:1230
unsigned int getElementSize() const
Definition Serializer:1226
unsigned int getKeySize() const
Definition Serializer:1223
virtual void setElement(void *) const
Definition Serializer:1232
BaseSerializer::Type getKeyType() const
Definition Serializer:1222
virtual bool valid() const
Definition Serializer:1229
MapIteratorObject()
Definition Serializer:1207
BaseSerializer::Type _keyType
Definition Serializer:1235
unsigned int _elementSize
Definition Serializer:1239
Definition Serializer:1277
const P &(C::* ConstGetter)() const
Definition Serializer:1286
virtual const void * getElement(const osg::Object &obj, void *ptrKey) const
Definition Serializer:1317
P &(C::* Getter)()
Definition Serializer:1285
P::key_type KeyType
Definition Serializer:1280
virtual unsigned int size(const osg::Object &obj) const
Definition Serializer:1326
void(C::* Setter)(const P &)
Definition Serializer:1287
virtual const std::string & getName() const
Definition Serializer:1294
std::string _name
Definition Serializer:1445
virtual MapIteratorObject * createIterator(osg::Object &obj) const
Definition Serializer:1367
P::iterator Iterator
Definition Serializer:1282
Getter _getter
Definition Serializer:1447
P::mapped_type ElementType
Definition Serializer:1281
virtual void setElement(osg::Object &obj, void *ptrKey, void *ptrValue) const
Definition Serializer:1303
P::const_iterator ConstIterator
Definition Serializer:1284
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:1418
virtual void * getElement(osg::Object &obj, void *ptrKey) const
Definition Serializer:1310
MapSerializer(const char *name, ConstGetter cgf, Getter gf, Setter sf, BaseSerializer::Type keyType, BaseSerializer::Type elementType)
Definition Serializer:1289
Setter _setter
Definition Serializer:1448
virtual MapIteratorObject * createReverseIterator(osg::Object &obj) const
Definition Serializer:1374
P::value_type ValueType
Definition Serializer:1279
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:1381
virtual void clear(osg::Object &obj) const
Definition Serializer:1296
ConstGetter _constgetter
Definition Serializer:1446
P::reverse_iterator ReverseIterator
Definition Serializer:1283
Definition Serializer:383
void readMatrixImplementation(InputStream &is, osg::Matrix &matrix)
Definition Serializer:428
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:411
Setter _setter
Definition Serializer:448
void(C::* Setter)(const osg::Matrix &)
Definition Serializer:387
Getter _getter
Definition Serializer:447
const osg::Matrix &(C::* Getter)() const
Definition Serializer:386
MatrixSerializer(const char *name, const osg::Matrix &def, Getter gf, Setter sf)
Definition Serializer:389
TemplateSerializer< osg::Matrix > ParentType
Definition Serializer:385
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:394
Definition Serializer:555
osg::ref_ptr< P > _defaultValue
Definition Serializer:628
ObjectSerializer(const char *name, P *def, Getter gf, Setter sf)
Definition Serializer:560
std::string _name
Definition Serializer:627
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:599
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:572
const P *(C::* Getter)() const
Definition Serializer:557
void(C::* Setter)(P *)
Definition Serializer:558
virtual const std::string & getName() const
Definition Serializer:570
virtual bool get(const osg::Object &obj, void *value)
Definition Serializer:568
Getter _getter
Definition Serializer:629
Setter _setter
Definition Serializer:630
virtual bool set(osg::Object &obj, void *value)
Definition Serializer:567
Definition ObjectWrapper:62
Definition OutputStream:57
Definition Serializer:332
Setter _setter
Definition Serializer:378
CP(C::* Getter)() const
Definition Serializer:336
const P & CP
Definition Serializer:335
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:361
PropByRefSerializer(const char *name, CP def, Getter gf, Setter sf)
Definition Serializer:339
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:344
void(C::* Setter)(CP)
Definition Serializer:337
Getter _getter
Definition Serializer:377
TemplateSerializer< P > ParentType
Definition Serializer:334
Definition Serializer:273
void(C::* Setter)(P)
Definition Serializer:277
PropByValSerializer(const char *name, P def, Getter gf, Setter sf, bool useHex=false)
Definition Serializer:279
P(C::* Getter)() const
Definition Serializer:276
TemplateSerializer< P > ParentType
Definition Serializer:275
Setter _setter
Definition Serializer:324
Getter _getter
Definition Serializer:323
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:303
bool _useHex
Definition Serializer:327
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:284
Definition Serializer:502
Getter _getter
Definition Serializer:549
const std::string &(C::* Getter)() const
Definition Serializer:505
StringSerializer(const char *name, const std::string &def, Getter gf, Setter sf)
Definition Serializer:508
Setter _setter
Definition Serializer:550
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:513
TemplateSerializer< std::string > ParentType
Definition Serializer:504
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:531
void(C::* Setter)(const std::string &)
Definition Serializer:506
Definition Serializer:256
virtual bool write(OutputStream &os, const osg::Object &obj)=0
TemplateSerializer(const char *name, P def)
Definition Serializer:259
virtual bool read(InputStream &is, osg::Object &obj)=0
P _defaultValue
Definition Serializer:268
std::string _name
Definition Serializer:267
virtual const std::string & getName() const
Definition Serializer:264
Definition Serializer:113
IntLookup _lookup
Definition Serializer:118
void(* AddValueFunc)(IntLookup *lookup)
Definition Serializer:115
UserLookupTableProxy(AddValueFunc func)
Definition Serializer:116
Definition Serializer:201
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:210
virtual const std::string & getName() const
Definition Serializer:243
bool(* Checker)(const C &)
Definition Serializer:203
bool(* Writer)(OutputStream &, const C &)
Definition Serializer:205
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:226
Writer _writer
Definition Serializer:251
std::string _name
Definition Serializer:246
bool(* Reader)(InputStream &, C &)
Definition Serializer:204
UserSerializer(const char *name, Checker cf, Reader rf, Writer wf)
Definition Serializer:207
Checker _checker
Definition Serializer:247
Reader _reader
Definition Serializer:250
Definition Serializer:858
VectorBaseSerializer(BaseSerializer::Type elementType, unsigned int elementSize)
Definition Serializer:861
virtual void addElement(osg::Object &, void *) const
Definition Serializer:872
virtual void * getElement(osg::Object &, unsigned int) const
Definition Serializer:875
virtual unsigned int size(const osg::Object &) const
Definition Serializer:868
virtual const void * getElement(const osg::Object &, unsigned int) const
Definition Serializer:876
unsigned int _elementSize
Definition Serializer:880
virtual void insertElement(osg::Object &, unsigned int, void *) const
Definition Serializer:873
virtual void clear(osg::Object &) const
Definition Serializer:871
Type _elementType
Definition Serializer:879
unsigned int getElementSize() const
Definition Serializer:866
virtual void setElement(osg::Object &, unsigned int, void *) const
Definition Serializer:874
virtual void resize(osg::Object &, unsigned int) const
Definition Serializer:869
Type getElementType() const
Definition Serializer:865
virtual void reserve(osg::Object &, unsigned int) const
Definition Serializer:870
Definition Serializer:886
virtual void clear(osg::Object &obj) const
Definition Serializer:920
Setter _setter
Definition Serializer:1049
virtual const void * getElement(const osg::Object &obj, unsigned int index) const
Definition Serializer:953
P::const_iterator ConstIterator
Definition Serializer:889
virtual void resize(osg::Object &obj, unsigned int numElements) const
Definition Serializer:908
void(C::* Setter)(const P &)
Definition Serializer:892
virtual void addElement(osg::Object &obj, void *ptr) const
Definition Serializer:926
virtual void reserve(osg::Object &obj, unsigned int numElements) const
Definition Serializer:914
std::string _name
Definition Serializer:1046
unsigned int _numElementsOnRow
Definition Serializer:1050
VectorSerializer(const char *name, ConstGetter cgf, Getter gf, Setter sf, BaseSerializer::Type elementType, unsigned int numElementsOnRow)
Definition Serializer:894
const P &(C::* ConstGetter)() const
Definition Serializer:891
P &(C::* Getter)()
Definition Serializer:890
virtual bool read(InputStream &is, osg::Object &obj)
Definition Serializer:961
virtual void insertElement(osg::Object &obj, unsigned int index, void *ptr) const
Definition Serializer:932
virtual unsigned int size(const osg::Object &obj) const
Definition Serializer:902
virtual const std::string & getName() const
Definition Serializer:900
ConstGetter _constgetter
Definition Serializer:1047
virtual void * getElement(osg::Object &obj, unsigned int index) const
Definition Serializer:946
Getter _getter
Definition Serializer:1048
virtual void setElement(osg::Object &obj, unsigned int index, void *ptr) const
Definition Serializer:939
P::value_type ValueType
Definition Serializer:888
virtual bool write(OutputStream &os, const osg::Object &obj)
Definition Serializer:998
@ SHALLOW_COPY
Definition CopyOp:47
Object()
Definition Object:69
T * get() const
Definition ref_ptr:117
OSGDB_EXPORT void split(const std::string &src, StringList &list, char separator=' ')
std::vector< std::string > StringList
Definition Serializer:31
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
@ INFO
Definition Notify:35
std::ostream & notify(void)
Definition Notify:80
#define OSGDB_EXPORT
Definition osgDB/Export:39
#define NULL
Definition osg/Export:55
Definition Serializer:1334
virtual bool advance()
Definition Serializer:1343
MapIterator(BaseSerializer::Type keyType, unsigned int keySize, BaseSerializer::Type elementType, unsigned int elementSize, Iterator itr, Iterator endItr)
Definition Serializer:1335
virtual void * getElement() const
Definition Serializer:1346
virtual const void * getKey() const
Definition Serializer:1345
virtual void setElement(void *ptr) const
Definition Serializer:1347
Iterator _endItr
Definition Serializer:1341
Iterator _itr
Definition Serializer:1340
virtual bool valid() const
Definition Serializer:1344
Definition Serializer:1351
ReverseIterator _endItr
Definition Serializer:1358
virtual bool valid() const
Definition Serializer:1361
virtual const void * getKey() const
Definition Serializer:1362
virtual void * getElement() const
Definition Serializer:1363
virtual bool advance()
Definition Serializer:1360
ReverseIterator _itr
Definition Serializer:1357
ReverseMapIterator(BaseSerializer::Type keyType, unsigned int keySize, BaseSerializer::Type elementType, unsigned int elementSize, ReverseIterator itr, ReverseIterator endItr)
Definition Serializer:1352
virtual void setElement(void *ptr) const
Definition Serializer:1364