00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef _FINFO_H
00010 #define _FINFO_H
00011
00012 class Finfo
00013 {
00014 public:
00015 Finfo( const string& name, const string& doc );
00016 virtual ~Finfo() {;}
00017
00021 const string& name() const;
00022
00024 const string& docs() const;
00025
00035 virtual void registerFinfo( Cinfo* c ) = 0;
00036
00042 virtual bool strSet( const Eref& tgt, const string& field,
00043 const string& arg ) const = 0;
00044
00050 virtual bool strGet( const Eref& tgt, const string& field,
00051 string& returnValue ) const = 0;
00052
00060 virtual void postCreationFunc( Id newId, Element* newElm ) const {
00061 ;
00062 }
00063
00077 virtual bool checkTarget( const Finfo* target) const {
00078 return 0;
00079 }
00080
00087 virtual bool addMsg( const Finfo* target, ObjId mid, Element* src ) const
00088 {
00089 return 0;
00090 }
00091
00093
00095
00123 virtual string rttiType() const;
00124
00128 virtual vector< string > innerSrc() const;
00129
00133 virtual vector< string > innerDest() const;
00134
00138 static const Cinfo* initCinfo();
00139
00140 private:
00141 string name_;
00142 string doc_;
00143 };
00144
00145
00146 class FinfoWrapper
00147 {
00148 public:
00149 FinfoWrapper( const Finfo* other )
00150 : f_( other )
00151 {;}
00152
00153 string getName( ) const;
00154 string docs( ) const;
00155 string type( ) const;
00161 vector< string > src( ) const;
00167 vector< string > dest( ) const;
00168
00169 private:
00170 const Finfo* f_;
00171 };
00172
00173 #endif // _FINFO_H