Overture  Version 25
EntityTag.h
Go to the documentation of this file.
1 #ifndef OV_ENTITY_TAG_H
2 #define OV_ENTITY_TAG_H
3 
4 #include <string>
5 
6 class GenericDataBase;
7 class aString;
8 
13 class EntityTag {
14 
15 public:
17  EntityTag( const std::string name="", const void *data=0, const bool copy_data=false, const int data_size=0 )
18  : tagName(""), tagData(0), copyData(false) , dataSize(0)
19  { this->setData( name , data, copy_data, data_size ); }
20 
22  EntityTag( const EntityTag & et ) : tagName(""), tagData(0), copyData(false) , dataSize(0)
23  { this->setData( et.tagName , et.tagData, et.copyData, et.dataSize ); }
24 
25  virtual ~EntityTag()
26  { destroy(); }
27 
29  inline bool is_nil() const { return tagName=="" && tagData==0; }
30 
32  virtual int setData( const std::string name, const void *data, const bool copy_data=false, const int data_size=0 );
34  virtual int getData( void * &data, std::string &name );
36  virtual const void * getData() const { return tagData; }
38  virtual int getDataSize() const { return dataSize; }
40  bool copiesData() const { return copyData; }
41 
43  std::string getName() const { return tagName; }
45  virtual std::string getClassName() const { return className; }
46 
48  virtual int get( const GenericDataBase & dir, const aString & name ); // get from a database file
50  virtual int put( GenericDataBase & dir, const aString & name) const; // put to a database file
51 
52 protected:
53  void destroy()
54  {
55  if ( tagData && copyData )
56  delete [] (char *)tagData;
57 
58  dataSize = 0;
59  tagData = 0;
60  }
61 
62 private:
63 
64  static std::string className;
65  std::string tagName;
66 
67  void *tagData;
68  bool copyData;
69  int dataSize;
70 
71 };
72 
73 #endif