00001 #ifndef X3DATTRIBUTERECORDER_H 00002 #define X3DATTRIBUTERECORDER_H 00003 00004 namespace X3DTK { 00005 00006 class X3DAbstractNode; 00007 00008 class X3DAttributeRecorder 00009 { 00010 public: 00011 virtual void record(X3DAbstractNode *N) const = 0; 00012 virtual ~X3DAttributeRecorder() {}; 00013 }; 00014 00015 template<class T, class V> 00016 class AttributeRecorder : public X3DAttributeRecorder 00017 { 00018 public: 00019 AttributeRecorder(const SFString &name, V T:: *member, const V &init); 00020 00021 void record(X3DAbstractNode *N) const; 00022 00023 private: 00024 SFString _name; 00025 V T:: *_member; 00026 V _init; 00027 }; 00028 00029 } 00030 00031 #include "X3DAttributeRecorder.inl" 00032 00033 #endif