33#include "hurricane/Error.h"
34#include "hurricane/DBos.h"
35#include "hurricane/Name.h"
36#include "hurricane/Properties.h"
47 static FastRTTI _fastRTTI;
49 static inline const FastRTTI& fastRTTI ();
50 virtual const FastRTTI& vfastRTTI ()
const;
52 enum DBoFlags { ForcedIdMode = (1<<0)
56 static void setMemoryLimit (
unsigned int );
57 static void setIdCounterLimit (
unsigned int );
58 static unsigned int getIdCounter ();
59 unsigned int getNextId ();
60 static void setNextId (
unsigned int );
61 static void resetId ();
62 static bool inForcedIdMode ();
63 static void enableForcedIdMode ();
64 static void disableForcedIdMode ();
65 static void useIdCounter2 ();
68 inline set<Property*>& _getPropertySet ();
69 void _onDestroyed (
Property* property );
70 inline unsigned int getId ()
const;
74 void setId (
unsigned int );
79 virtual string _getTypeName ()
const;
80 virtual string _getString ()
const;
81 virtual Record* _getRecord ()
const;
82 virtual void _toJson ( JsonWriter* )
const;
83 virtual void _toJsonCollections ( JsonWriter* )
const;
84 virtual void _toJsonSignature ( JsonWriter* )
const;
85 void toJson ( JsonWriter* )
const;
86 void toJsonSignature ( JsonWriter* )
const;
89 virtual ~DBo () noexcept(false);
90 virtual
void _postCreate ();
91 virtual
void _preDestroy ();
93 DBo ( const DBo& ) = delete;
94 DBo& operator= ( const DBo& ) = delete;
96 static
unsigned int _memoryLimit;
97 static
unsigned long _flags;
98 static
unsigned int _nextId;
99 static
unsigned int _idCount;
100 static
unsigned int _idCounter;
101 static
unsigned int _idCounterLimit;
103 mutable set<
Property*> _propertySet;
106 template<
typename Key>
107 inline bool operator() (
const Key* lhs,
const Key* rhs )
const;
113 inline const FastRTTI& DBo::fastRTTI () {
return _fastRTTI; }
114 inline set<Property*>& DBo::_getPropertySet () {
return _propertySet; }
116 inline unsigned int DBo::getId ()
const {
return _id; }
118 template<
typename Key>
119 inline bool DBo::CompareById::operator() (
const Key* lhs,
const Key* rhs )
const
120 {
return ((lhs)?lhs->getId():0) < ((rhs)?rhs->getId():0); }
126 class JsonDBo :
public JsonObject {
128 JsonDBo (
unsigned int flags );
129 template<
typename T>
inline void update ( JsonStack&, T );
133 template<
typename T>
inline void JsonDBo::update ( JsonStack& stack, T hobject )
136 stack.push_back_dbo(
dynamic_cast<DBo*
>(hobject) );
142INSPECTOR_P_SUPPORT(Hurricane::DBo);
bool hasProperty() const
Definition DBo.h:115
Property * getProperty(const Name &) const
Properties getProperties() const
void removeProperty(const Name &)
void update(JsonStack &, T)
Definition JsonObject.h:406
Name description (API)
Definition Name.h:35
Property description (API)
Definition Property.h:56
Contains Almost Everything.
Definition BasicLayer.h:39
GenericCollection< Property * > Properties
Definition Properties.h:35