14#ifndef OSG_VALUEOBJECT
15#define OSG_VALUEOBJECT 1
90 virtual void apply(
unsigned char ) {}
92 virtual void apply(
unsigned short ) {}
94 virtual void apply(
unsigned int ) {}
97 virtual void apply(
const std::string& ) {}
148 virtual void apply(
unsigned char& ) {}
150 virtual void apply(
unsigned short& ) {}
152 virtual void apply(
unsigned int& ) {}
155 virtual void apply(std::string& ) {}
274template<
typename T >
277 static const char*
className() {
return "TemplateValueObject"; }
281template<
typename T >
322#define META_ValueObject(TYPE,NAME) \
323 template<> struct ValueObjectClassNameTrait<TYPE> { static const char* className() { return #NAME; } }; \
324 typedef TemplateValueObject<TYPE> NAME;
353bool osg::
Object::getUserValue(const std::
string& name, T& value)
const
358 if (!udc) udc = _userDataContainer;
360 if (!udc)
return false;
363 if (obj &&
typeid(*obj)==
typeid(UserValueObject))
365 const UserValueObject* uvo =
static_cast<const UserValueObject*
>(obj);
366 value = uvo->getValue();
384 getOrCreateUserDataContainer();
385 udc = _userDataContainer;
389 if (i<udc->getNumUserObjects())
392 if (
typeid(*obj)==
typeid(UserValueObject))
394 UserValueObject* uvo =
static_cast<UserValueObject*
>(obj);
395 uvo->setValue(value);
409template<
class P,
class T>
413 const char* name =
typeid(T).name();
416 if (index<udc->getNumUserObjects())
419 if (
typeid(*userObject)==
typeid(T))
421 object =
static_cast<T*
>(userObject);
436 object->setName(name);
#define META_ValueObject(TYPE, NAME)
Definition ValueObject:322
Definition BoundingBox:34
Definition BoundingSphere:35
@ SHALLOW_COPY
Definition CopyOp:47
virtual void apply(double in_value)
Definition ValueObject:250
virtual void apply(bool in_value)
Definition ValueObject:242
virtual void apply(char in_value)
Definition ValueObject:243
virtual void apply(unsigned int in_value)
Definition ValueObject:248
virtual void apply(short in_value)
Definition ValueObject:245
GetScalarValue()
Definition ValueObject:237
virtual void apply(float in_value)
Definition ValueObject:249
virtual void apply(unsigned char in_value)
Definition ValueObject:244
bool value
Definition ValueObject:240
bool set
Definition ValueObject:239
virtual void apply(unsigned short in_value)
Definition ValueObject:246
virtual void apply(int in_value)
Definition ValueObject:247
Definition ValueObject:214
virtual void apply(char in_value)
Definition ValueObject:223
virtual void apply(short in_value)
Definition ValueObject:225
virtual void apply(unsigned short in_value)
Definition ValueObject:226
virtual void apply(bool in_value)
Definition ValueObject:222
virtual void apply(float in_value)
Definition ValueObject:229
GetScalarValue()
Definition ValueObject:217
virtual void apply(unsigned int in_value)
Definition ValueObject:228
virtual void apply(unsigned char in_value)
Definition ValueObject:224
virtual void apply(int in_value)
Definition ValueObject:227
virtual void apply(double in_value)
Definition ValueObject:230
T value
Definition ValueObject:220
bool set
Definition ValueObject:219
void setUserValue(const std::string &name, const T &value)
Definition ValueObject:377
virtual void setName(const std::string &name)
Definition Object:203
osg::UserDataContainer * getOrCreateUserDataContainer()
A plane class. It can be used to represent an infinite plane.
Definition Plane:34
Definition ValueObject:255
bool set
Definition ValueObject:260
virtual void apply(int &in_value)
Definition ValueObject:268
virtual void apply(short &in_value)
Definition ValueObject:266
virtual void apply(float &in_value)
Definition ValueObject:270
virtual void apply(unsigned char &in_value)
Definition ValueObject:265
virtual void apply(double &in_value)
Definition ValueObject:271
virtual void apply(unsigned short &in_value)
Definition ValueObject:267
SetScalarValue(T in_value)
Definition ValueObject:258
virtual void apply(bool &in_value)
Definition ValueObject:263
virtual void apply(unsigned int &in_value)
Definition ValueObject:269
virtual void apply(char &in_value)
Definition ValueObject:264
T value
Definition ValueObject:261
Definition ValueObject:283
void setValue(const T &value)
Definition ValueObject:308
TemplateValueObject(const TemplateValueObject &rhs, const osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY)
Definition ValueObject:298
static const char * s_TemplateValueObject_className
Definition ValueObject:317
virtual const char * className() const
Definition ValueObject:306
TemplateValueObject(const T &value)
Definition ValueObject:290
virtual ~TemplateValueObject()
Definition ValueObject:316
TemplateValueObject()
Definition ValueObject:286
virtual Object * cloneType() const
Definition ValueObject:302
virtual bool get(GetValueVisitor &gvv) const
Definition ValueObject:311
TemplateValueObject(const std::string &name, const T &value)
Definition ValueObject:294
virtual Object * clone(const CopyOp ©op) const
Definition ValueObject:303
T _value
Definition ValueObject:319
virtual const char * libraryName() const
Definition ValueObject:305
virtual bool set(SetValueVisitor &svv)
Definition ValueObject:312
virtual bool isSameKindAs(const Object *obj) const
Definition ValueObject:304
const T & getValue() const
Definition ValueObject:309
Definition UserDataContainer:26
virtual unsigned int addUserObject(Object *obj)=0
virtual unsigned int getUserObjectIndex(const osg::Object *obj, unsigned int startPos=0) const =0
virtual void setUserObject(unsigned int i, Object *obj)=0
virtual Object * getUserObject(unsigned int i)=0
Definition ValueObject:85
virtual void apply(double)
Definition ValueObject:96
virtual void apply(unsigned int)
Definition ValueObject:94
virtual void apply(const osg::Vec4ui &)
Definition ValueObject:121
virtual void apply(const osg::BoundingBoxf &)
Definition ValueObject:135
virtual void apply(unsigned short)
Definition ValueObject:92
virtual void apply(const osg::Vec4b &)
Definition ValueObject:101
virtual void apply(const osg::Plane &)
Definition ValueObject:132
virtual void apply(const osg::Matrixf &)
Definition ValueObject:133
virtual void apply(unsigned char)
Definition ValueObject:90
virtual void apply(const osg::Vec2us &)
Definition ValueObject:111
virtual void apply(int)
Definition ValueObject:93
virtual void apply(const osg::Vec2d &)
Definition ValueObject:127
virtual void apply(const osg::Quat &)
Definition ValueObject:131
virtual void apply(const osg::Vec3s &)
Definition ValueObject:108
virtual void apply(const osg::BoundingBoxd &)
Definition ValueObject:136
virtual void apply(const osg::BoundingSpheref &)
Definition ValueObject:137
virtual void apply(const osg::Vec3b &)
Definition ValueObject:100
virtual void apply(const osg::Vec4s &)
Definition ValueObject:109
virtual void apply(short)
Definition ValueObject:91
virtual void apply(const osg::Vec4i &)
Definition ValueObject:117
virtual void apply(char)
Definition ValueObject:89
virtual void apply(const osg::Vec3us &)
Definition ValueObject:112
virtual void apply(const osg::Vec3d &)
Definition ValueObject:128
virtual void apply(const osg::Vec4f &)
Definition ValueObject:125
virtual void apply(const osg::Vec4us &)
Definition ValueObject:113
virtual void apply(const osg::Vec3f &)
Definition ValueObject:124
virtual void apply(const osg::Vec2i &)
Definition ValueObject:115
virtual void apply(const osg::Vec4ub &)
Definition ValueObject:105
virtual void apply(const osg::Vec2f &)
Definition ValueObject:123
virtual void apply(const osg::Vec2ub &)
Definition ValueObject:103
virtual ~GetValueVisitor()
Definition ValueObject:87
virtual void apply(const std::string &)
Definition ValueObject:97
virtual void apply(const osg::Matrixd &)
Definition ValueObject:134
virtual void apply(const osg::BoundingSphered &)
Definition ValueObject:138
virtual void apply(const osg::Vec2s &)
Definition ValueObject:107
virtual void apply(const osg::Vec3ui &)
Definition ValueObject:120
virtual void apply(const osg::Vec3i &)
Definition ValueObject:116
virtual void apply(const osg::Vec2b &)
Definition ValueObject:99
virtual void apply(const osg::Vec2ui &)
Definition ValueObject:119
virtual void apply(const osg::Vec4d &)
Definition ValueObject:129
virtual void apply(float)
Definition ValueObject:95
virtual void apply(bool)
Definition ValueObject:88
virtual void apply(const osg::Vec3ub &)
Definition ValueObject:104
Definition ValueObject:143
virtual void apply(osg::Vec2b &)
Definition ValueObject:157
virtual void apply(osg::Vec4f &)
Definition ValueObject:183
virtual void apply(osg::Vec3d &)
Definition ValueObject:186
virtual void apply(osg::Vec3ui &)
Definition ValueObject:178
virtual void apply(osg::Vec2ui &)
Definition ValueObject:177
virtual void apply(osg::Vec2d &)
Definition ValueObject:185
virtual void apply(osg::Vec2f &)
Definition ValueObject:181
virtual void apply(osg::Vec3ub &)
Definition ValueObject:162
virtual void apply(osg::BoundingBoxd &)
Definition ValueObject:194
virtual void apply(osg::Vec4s &)
Definition ValueObject:167
virtual void apply(osg::Vec4i &)
Definition ValueObject:175
virtual void apply(osg::Plane &)
Definition ValueObject:190
virtual void apply(osg::Matrixf &)
Definition ValueObject:191
virtual void apply(osg::Vec4b &)
Definition ValueObject:159
virtual void apply(osg::Vec3b &)
Definition ValueObject:158
virtual void apply(unsigned char &)
Definition ValueObject:148
virtual void apply(osg::BoundingSpheref &)
Definition ValueObject:195
virtual ~SetValueVisitor()
Definition ValueObject:145
virtual void apply(osg::Vec4ui &)
Definition ValueObject:179
virtual void apply(bool &)
Definition ValueObject:146
virtual void apply(unsigned int &)
Definition ValueObject:152
virtual void apply(osg::Vec4us &)
Definition ValueObject:171
virtual void apply(osg::Vec3s &)
Definition ValueObject:166
virtual void apply(osg::Vec2us &)
Definition ValueObject:169
virtual void apply(osg::Vec4ub &)
Definition ValueObject:163
virtual void apply(osg::Quat &)
Definition ValueObject:189
virtual void apply(char &)
Definition ValueObject:147
virtual void apply(float &)
Definition ValueObject:153
virtual void apply(osg::BoundingSphered &)
Definition ValueObject:196
virtual void apply(osg::Vec2s &)
Definition ValueObject:165
virtual void apply(osg::Vec3i &)
Definition ValueObject:174
virtual void apply(short &)
Definition ValueObject:149
virtual void apply(osg::Vec4d &)
Definition ValueObject:187
virtual void apply(osg::Vec3us &)
Definition ValueObject:170
virtual void apply(osg::Matrixd &)
Definition ValueObject:192
virtual void apply(std::string &)
Definition ValueObject:155
virtual void apply(unsigned short &)
Definition ValueObject:150
virtual void apply(osg::Vec2ub &)
Definition ValueObject:161
virtual void apply(osg::Vec2i &)
Definition ValueObject:173
virtual void apply(osg::Vec3f &)
Definition ValueObject:182
virtual void apply(int &)
Definition ValueObject:151
virtual void apply(double &)
Definition ValueObject:154
virtual void apply(osg::BoundingBoxf &)
Definition ValueObject:193
Definition ValueObject:67
virtual const ValueObject * asValueObject() const
Definition ValueObject:82
ValueObject(const std::string &name)
Definition ValueObject:71
META_Object(osg, ValueObject) virtual ValueObject *asValueObject()
Definition ValueObject:74
virtual bool get(GetValueVisitor &) const
Definition ValueObject:199
virtual ~ValueObject()
Definition ValueObject:209
ValueObject(const ValueObject &rhs, const osg::CopyOp copyop=osg::CopyOp::SHALLOW_COPY)
Definition ValueObject:72
virtual bool set(SetValueVisitor &)
Definition ValueObject:200
bool getScalarValue(T &value)
Definition ValueObject:203
ValueObject()
Definition ValueObject:70
bool setScalarValue(T value)
Definition ValueObject:206
author: Julien Valentin 2017 (mp3butcher@hotmail.com)
Definition AlphaFunc:19
T * getOrCreateUserObjectOfType(P *parent)
Definition ValueObject:410
#define NULL
Definition osg/Export:55
Definition ValueObject:276
static const char * className()
Definition ValueObject:277