00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_IOBJECT_OBJECT_H__
00020 #define __CS_IOBJECT_OBJECT_H__
00021
00026 #include "csutil/scf.h"
00027 #include "csutil/ref.h"
00028
00029 struct iObjectIterator;
00030
00036 #define CS_GET_CHILD_OBJECT(object,Interface) \
00037 csPtr<Interface> ((Interface*)(object)->GetChild( \
00038 Interface##_scfGetID (), Interface##_VERSION))
00039
00044 #define CS_GET_NAMED_CHILD_OBJECT(object,Interface,name) \
00045 csPtr<Interface> ((Interface*)(object)->GetChild \
00046 (Interface##_scfGetID (), Interface##_VERSION, name))
00047
00052 #define CS_GET_FIRST_NAMED_CHILD_OBJECT(object,Interface,name) \
00053 csPtr<Interface> ((Interface*)(object)->GetChild \
00054 (Interface##_scfGetID (), Interface##_VERSION, name, true))
00055
00056
00057 SCF_VERSION (iObject, 0, 3, 0);
00058
00062 struct iObject : public iBase
00063 {
00065 virtual void SetName (const char *iName) = 0;
00066
00068 virtual const char *GetName () const = 0;
00069
00071 virtual CS_ID GetID () const = 0;
00072
00077 virtual void SetObjectParent (iObject *obj) = 0;
00078
00080 virtual iObject* GetObjectParent () const = 0;
00081
00083 virtual void ObjAdd (iObject *obj) = 0;
00084
00086 virtual void ObjRemove (iObject *obj) = 0;
00087
00089 virtual void ObjRemoveAll () = 0;
00090
00092 virtual void ObjAddChildren (iObject *Parent) = 0;
00093
00104 virtual void* GetChild (int iInterfaceID, int iVersion,
00105 const char *Name = NULL, bool FirstName = false) const = 0;
00106
00108 virtual iObject *GetChild (const char *Name) const = 0;
00109
00114 virtual csPtr<iObjectIterator> GetIterator () = 0;
00115
00116
00117 virtual void ObjReleaseOld (iObject *obj) = 0;
00118 };
00119
00120
00121 SCF_VERSION (iObjectIterator, 0, 0, 1);
00122
00130 struct iObjectIterator : public iBase
00131 {
00133 virtual bool Next() = 0;
00134
00136 virtual void Reset() = 0;
00137
00139 virtual iObject *GetObject () const = 0;
00140
00142 virtual iObject* GetParentObj() const = 0;
00143
00145 virtual bool IsFinished () const = 0;
00146
00153 virtual bool FindName (const char* name) = 0;
00154 };
00155
00156
00157 SCF_VERSION (iDataObject, 0, 0, 1);
00158
00160 struct iDataObject : public iBase
00161 {
00163 virtual iObject *QueryObject () = 0;
00164
00166 virtual void* GetData () = 0;
00167 };
00170 #endif // __CS_IOBJECT_OBJECT_H__