00001
00002 #ifndef oSysClass_h
00003 #define oSysClass_h 1
00004
00005
00006 #include "d_Varray.h"
00007 #include "d_Object.h"
00008 #include "d_Dictionary.h"
00009 #include "oSysSegment.h"
00010 #include "oSysProperty.h"
00011
00012
00013 class _ODLL oClass;
00014 class oProperty;
00015 class oRefSeg;
00016
00017
00018 class _ODLL oSysClass : public d_Object
00019 {
00020 public:
00021 oSysClass( d_String& iClassName,
00022 d_ULong iStart, d_ULong iStep,
00023 d_UShort iId,
00024 oRefSeg* iRef );
00025 void d_activate();
00026 void d_deactivate();
00027
00028 void addBase( d_Ref<oSysClass>& iBaseClass );
00029 void removeBase( d_String& iBaseName );
00030
00031 d_Ref<oSysProperty> addProperty( const char* iName,
00032 d_UShort iType,
00033 d_ULong iItems = 0,
00034 d_Boolean iPersistent = true,
00035 const char* iEmbedded = "",
00036 const char* iValueType = "",
00037 d_Boolean iRelationship = false,
00038 d_ULong iOffset = 0,
00039 d_ULong iSize = 0,
00040 d_Char iLoadPolicy = oSysProperty::LOAD_ALWAYS );
00041 void removeProperty( d_String iPropName );
00042
00043 d_String getName();
00044
00045 d_Boolean isAbstract();
00046 void setAbstract( d_Boolean iValue );
00047
00048 d_Ref< oSysSegment > getSegment();
00049
00050
00051 oSysClass( d_Object::DynaFactoryConstructor* iObj ){;}
00052
00053 protected:
00054 void changeName( d_String& iNewName );
00055
00056 private:
00057 d_String name;
00058 d_UShort id;
00059 d_String enchryptionKey;
00060 d_Boolean abstractClass;
00061
00062 d_Ref< oSysSegment > segment;
00063
00064 d_Dictionary< d_String, d_Ref< oSysClass > > bases;
00065 d_Dictionary< d_String, d_Ref< oSysProperty > > properties;
00066 d_Dictionary< d_String, d_String > notes;
00067
00068 friend class oSysDatabase;
00069 };
00070
00071
00072
00073 #endif
00074