SXXXXXXX_PyBusMonitor1553/cpp/GrifoScope/GrifoSdkEif/pub/inc/GC/GcObject.h
2025-12-17 07:59:30 +01:00

85 lines
1.8 KiB
C++

#ifndef GCOBJECT_H
#define GCOBJECT_H
class GcObject;
class GcOpaqueObjectList
{
public:
const char* gol_name;
const char* gol_prefix;
GcObject* gol_first;
unsigned int gol_items;
//mex_mt_object_t gol_mex_lst;
unsigned int objAdd_(GcObject& obj);
void registerList();
GcOpaqueObjectList* gol_next_lst;
};
template<class T_> class GcObjectList: public GcOpaqueObjectList
{
public:
GcObjectList(const char* name, const char* unnamed_prefix=0)
{
gol_name=name;
gol_prefix=unnamed_prefix ? unnamed_prefix : name;
gol_first=0;
gol_items=0;
registerList();
}
void add(T_& obj) { GcOpaqueObjectList::objAdd_(obj);}
};
//struct mex_mt_tag_t;
#define GC_OBJ_MON_DECLARE(class_name_)\
friend class GcObjMonFriend_##class_name_;\
static const int class_name_##_cookie_;\
virtual const void* mexMetatype() const { return &class_name_##_cookie_;}
/*virtual void gc_obj_mon_metaregister() const { extern void gc_obj_mon_metaregister(const class_name_*); gc_obj_mon_metaregister(this);}*/
#define GC_OBJ_MON_DEFINE(class_name_) const int class_name_::class_name_##_cookie_=0;
class GcObject
{
public:
GcObject(GcObject* parent=0, const char* name=0, GcOpaqueObjectList* lst=0);
virtual ~GcObject();
const char* objName() const;
void setObjName(const char* name);
GcObject* next() const { return gco_next_;}
GC_OBJ_MON_DECLARE(GcObject)
protected:
void setParent(GcObject* parent);
GcOpaqueObjectList* gco_list_;
GcObject* gco_parent_;
GcObject* gco_next_;
GcObject* gco_children_;
private:
unsigned int gco_instance_num_;
public:
char* gco_name_ptr_;
char gco_name_[32];
friend class GcObjectServices;
friend class GcOpaqueObjectList;
private:
GcObject(const GcObject&);
void operator=(const GcObject&);
};
#endif // GCOBJECT_H