|
|
|
|
@@ -179,7 +179,7 @@
|
|
|
|
|
#define PIOBJECT(name) \
|
|
|
|
|
protected: \
|
|
|
|
|
typedef name __PIObject__; \
|
|
|
|
|
static const PIString __classNameS() {return PIString(#name);} \
|
|
|
|
|
static const PIString __classNameS() {return PIStringAscii(#name);} \
|
|
|
|
|
public: \
|
|
|
|
|
virtual const char * className() const {return #name;} \
|
|
|
|
|
private:
|
|
|
|
|
@@ -219,9 +219,9 @@
|
|
|
|
|
eh.eh_set << fp; \
|
|
|
|
|
__EHFunc & f(eh.eh_func[fp]); \
|
|
|
|
|
f.scope = __classNameS(); \
|
|
|
|
|
f.func_name = #name; \
|
|
|
|
|
f.func_name = PIStringAscii(#name); \
|
|
|
|
|
f.addr = fp; \
|
|
|
|
|
f.type_ret = #ret; \
|
|
|
|
|
f.type_ret = PIStringAscii(#ret); \
|
|
|
|
|
} \
|
|
|
|
|
}; \
|
|
|
|
|
__##name##0_Initializer__ __##name##0_init__; \
|
|
|
|
|
@@ -237,11 +237,11 @@
|
|
|
|
|
eh.eh_set << fp; \
|
|
|
|
|
__EHFunc & f(eh.eh_func[fp]); \
|
|
|
|
|
f.scope = __classNameS(); \
|
|
|
|
|
f.func_name = #name; \
|
|
|
|
|
f.func_name = PIStringAscii(#name); \
|
|
|
|
|
f.addr = fp; \
|
|
|
|
|
f.type_ret = #ret; \
|
|
|
|
|
f.types << #a0; \
|
|
|
|
|
f.names << #n0; \
|
|
|
|
|
f.type_ret = PIStringAscii(#ret); \
|
|
|
|
|
f.types << PIStringAscii(#a0); \
|
|
|
|
|
f.names << PIStringAscii(#n0); \
|
|
|
|
|
} \
|
|
|
|
|
}; \
|
|
|
|
|
__##name##1##n0##_Initializer__ __##name##1##n0##_init__; \
|
|
|
|
|
@@ -257,11 +257,11 @@
|
|
|
|
|
eh.eh_set << fp; \
|
|
|
|
|
__EHFunc & f(eh.eh_func[fp]); \
|
|
|
|
|
f.scope = __classNameS(); \
|
|
|
|
|
f.func_name = #name; \
|
|
|
|
|
f.func_name = PIStringAscii(#name); \
|
|
|
|
|
f.addr = fp; \
|
|
|
|
|
f.type_ret = #ret; \
|
|
|
|
|
f.types << #a0 << #a1; \
|
|
|
|
|
f.names << #n0 << #n1; \
|
|
|
|
|
f.type_ret = PIStringAscii(#ret); \
|
|
|
|
|
f.types << PIStringAscii(#a0) << PIStringAscii(#a1); \
|
|
|
|
|
f.names << PIStringAscii(#n0) << PIStringAscii(#n1); \
|
|
|
|
|
} \
|
|
|
|
|
}; \
|
|
|
|
|
__##name##2##n0##n1##_Initializer__ __##name##2##n0##n1##_init__; \
|
|
|
|
|
@@ -277,11 +277,11 @@
|
|
|
|
|
eh.eh_set << fp; \
|
|
|
|
|
__EHFunc & f(eh.eh_func[fp]); \
|
|
|
|
|
f.scope = __classNameS(); \
|
|
|
|
|
f.func_name = #name; \
|
|
|
|
|
f.func_name = PIStringAscii(#name); \
|
|
|
|
|
f.addr = fp; \
|
|
|
|
|
f.type_ret = #ret; \
|
|
|
|
|
f.types << #a0 << #a1 << #a2; \
|
|
|
|
|
f.names << #n0 << #n1 << #n2; \
|
|
|
|
|
f.type_ret = PIStringAscii(#ret); \
|
|
|
|
|
f.types << PIStringAscii(#a0) << PIStringAscii(#a1) << PIStringAscii(#a2); \
|
|
|
|
|
f.names << PIStringAscii(#n0) << PIStringAscii(#n1) << PIStringAscii(#n2); \
|
|
|
|
|
} \
|
|
|
|
|
}; \
|
|
|
|
|
__##name##3##n0##n1##n2##_Initializer__ __##name##3##n0##n1##n2##_init__; \
|
|
|
|
|
@@ -297,11 +297,11 @@
|
|
|
|
|
eh.eh_set << fp; \
|
|
|
|
|
__EHFunc & f(eh.eh_func[fp]); \
|
|
|
|
|
f.scope = __classNameS(); \
|
|
|
|
|
f.func_name = #name; \
|
|
|
|
|
f.func_name = PIStringAscii(#name); \
|
|
|
|
|
f.addr = fp; \
|
|
|
|
|
f.type_ret = #ret; \
|
|
|
|
|
f.types << #a0 << #a1 << #a2 << #a3; \
|
|
|
|
|
f.names << #n0 << #n1 << #n2 << #n3; \
|
|
|
|
|
f.type_ret = PIStringAscii(#ret); \
|
|
|
|
|
f.types << PIStringAscii(#a0) << PIStringAscii(#a1) << PIStringAscii(#a2) << PIStringAscii(#a3); \
|
|
|
|
|
f.names << PIStringAscii(#n0) << PIStringAscii(#n1) << PIStringAscii(#n2) << PIStringAscii(#n3); \
|
|
|
|
|
} \
|
|
|
|
|
}; \
|
|
|
|
|
__##name##4##n0##n1##n2##n3##_Initializer__ __##name##4##n0##n1##n2##n3##_init__; \
|
|
|
|
|
@@ -363,11 +363,11 @@
|
|
|
|
|
#define EVENT_VHANDLER EVENT_VHANDLER0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define EVENT0(name) EVENT_HANDLER0(void, name) {PIObject::raiseEvent(this, #name);}
|
|
|
|
|
#define EVENT1(name, a0, n0) EVENT_HANDLER1(void, name, a0, n0) {PIObject::raiseEvent(this, #name, n0);}
|
|
|
|
|
#define EVENT2(name, a0, n0, a1, n1) EVENT_HANDLER2(void, name, a0, n0, a1, n1) {PIObject::raiseEvent(this, #name, n0, n1);}
|
|
|
|
|
#define EVENT3(name, a0, n0, a1, n1, a2, n2) EVENT_HANDLER3(void, name, a0, n0, a1, n1, a2, n2) {PIObject::raiseEvent(this, #name, n0, n1, n2);}
|
|
|
|
|
#define EVENT4(name, a0, n0, a1, n1, a2, n2, a3, n3) EVENT_HANDLER4(void, name, a0, n0, a1, n1, a2, n2, a3, n3) {PIObject::raiseEvent(this, #name, n0, n1, n2, n3);}
|
|
|
|
|
#define EVENT0(name) EVENT_HANDLER0(void, name) {PIObject::raiseEvent(this, PIStringAscii(#name));}
|
|
|
|
|
#define EVENT1(name, a0, n0) EVENT_HANDLER1(void, name, a0, n0) {PIObject::raiseEvent(this, PIStringAscii(#name), n0);}
|
|
|
|
|
#define EVENT2(name, a0, n0, a1, n1) EVENT_HANDLER2(void, name, a0, n0, a1, n1) {PIObject::raiseEvent(this, PIStringAscii(#name), n0, n1);}
|
|
|
|
|
#define EVENT3(name, a0, n0, a1, n1, a2, n2) EVENT_HANDLER3(void, name, a0, n0, a1, n1, a2, n2) {PIObject::raiseEvent(this, PIStringAscii(#name), n0, n1, n2);}
|
|
|
|
|
#define EVENT4(name, a0, n0, a1, n1, a2, n2, a3, n3) EVENT_HANDLER4(void, name, a0, n0, a1, n1, a2, n2, a3, n3) {PIObject::raiseEvent(this, PIStringAscii(#name), n0, n1, n2, n3);}
|
|
|
|
|
#define EVENT EVENT0
|
|
|
|
|
|
|
|
|
|
#define RAISE_EVENT0(src, event) (src)->event();
|
|
|
|
|
@@ -377,27 +377,27 @@
|
|
|
|
|
#define RAISE_EVENT4(src, event, v0, v1, v2, v3) (src)->event(v0, v1, v2, v3);
|
|
|
|
|
#define RAISE_EVENT RAISE_EVENT0
|
|
|
|
|
|
|
|
|
|
#define CONNECTU(src, event, dest, handler) PIObject::piConnectU(src, #event, dest, dest, #handler);
|
|
|
|
|
#define CONNECTU(src, event, dest, handler) PIObject::piConnectU(src, PIStringAscii(#event), dest, dest, PIStringAscii(#handler));
|
|
|
|
|
|
|
|
|
|
#define CONNECT0(ret, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*))(&(src)->__stat_eh_##event##__), 0);
|
|
|
|
|
#define CONNECT1(ret, a0, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0))(&(src)->__stat_eh_##event##__), 1);
|
|
|
|
|
#define CONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1))(&(src)->__stat_eh_##event##__), 2);
|
|
|
|
|
#define CONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1, a2))(&(src)->__stat_eh_##event##__), 3);
|
|
|
|
|
#define CONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1, a2, a3))(&(src)->__stat_eh_##event##__), 4);
|
|
|
|
|
#define CONNECT0(ret, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*))(&(src)->__stat_eh_##event##__), 0);
|
|
|
|
|
#define CONNECT1(ret, a0, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0))(&(src)->__stat_eh_##event##__), 1);
|
|
|
|
|
#define CONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1))(&(src)->__stat_eh_##event##__), 2);
|
|
|
|
|
#define CONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1, a2))(&(src)->__stat_eh_##event##__), 3);
|
|
|
|
|
#define CONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__), (void*)(void(*)(void*, a0, a1, a2, a3))(&(src)->__stat_eh_##event##__), 4);
|
|
|
|
|
#define CONNECT CONNECT0
|
|
|
|
|
|
|
|
|
|
#define WEAK_CONNECT0(ret, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__), 0, 0);
|
|
|
|
|
#define WEAK_CONNECT1(ret, a0, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__), 0, 1);
|
|
|
|
|
#define WEAK_CONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__), 0, 2);
|
|
|
|
|
#define WEAK_CONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__), 0, 3);
|
|
|
|
|
#define WEAK_CONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piConnect(src, #event, dest, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__), 0, 4);
|
|
|
|
|
#define WEAK_CONNECT0(ret, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__), 0, 0);
|
|
|
|
|
#define WEAK_CONNECT1(ret, a0, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__), 0, 1);
|
|
|
|
|
#define WEAK_CONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__), 0, 2);
|
|
|
|
|
#define WEAK_CONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__), 0, 3);
|
|
|
|
|
#define WEAK_CONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piConnect(src, PIStringAscii(#event), dest, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__), 0, 4);
|
|
|
|
|
#define WEAK_CONNECT WEAK_CONNECT0
|
|
|
|
|
|
|
|
|
|
#define DISCONNECT0(ret, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT1(ret, a0, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piDisconnect(src, #event, dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT0(ret, src, event, dest, handler) PIObject::piDisconnect(src, PIStringAscii(#event), dest, (void*)(ret(*)(void*))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT1(ret, a0, src, event, dest, handler) PIObject::piDisconnect(src, PIStringAscii(#event), dest, (void*)(ret(*)(void*, a0))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT2(ret, a0, a1, src, event, dest, handler) PIObject::piDisconnect(src, PIStringAscii(#event), dest, (void*)(ret(*)(void*, a0, a1))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT3(ret, a0, a1, a2, src, event, dest, handler) PIObject::piDisconnect(src, PIStringAscii(#event), dest, (void*)(ret(*)(void*, a0, a1, a2))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT4(ret, a0, a1, a2, a3, src, event, dest, handler) PIObject::piDisconnect(src, PIStringAscii(#event), dest, (void*)(ret(*)(void*, a0, a1, a2, a3))(&(dest)->__stat_eh_##handler##__));
|
|
|
|
|
#define DISCONNECT DISCONNECT0
|
|
|
|
|
|
|
|
|
|
#define HANDLER(handler) __stat_eh_##handler##__
|
|
|
|
|
@@ -427,7 +427,7 @@ public:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//! Returns object name
|
|
|
|
|
PIString name() const {return property("name").toString();}
|
|
|
|
|
PIString name() const {return property(PIStringAscii("name")).toString();}
|
|
|
|
|
|
|
|
|
|
//! Returns object class name
|
|
|
|
|
virtual const char * className() const {return "PIObject";}
|
|
|
|
|
@@ -436,14 +436,15 @@ public:
|
|
|
|
|
virtual const char * superClassName() const {return "";}
|
|
|
|
|
|
|
|
|
|
//! Return if debug of this object is active
|
|
|
|
|
bool debug() const {return property("debug").toBool();}
|
|
|
|
|
bool debug() const {return property(PIStringAscii("debug")).toBool();}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//! Set object name
|
|
|
|
|
void setName(const PIString & name) {setProperty("name", name);}
|
|
|
|
|
void setName(const PIString & name) {setProperty(PIStringAscii("name"), name);}
|
|
|
|
|
void setName(const char * name) {setName(PIStringAscii(name));}
|
|
|
|
|
|
|
|
|
|
//! Set object debug active
|
|
|
|
|
void setDebug(bool debug) {setProperty("debug", debug);}
|
|
|
|
|
void setDebug(bool debug) {setProperty(PIStringAscii("debug"), debug);}
|
|
|
|
|
|
|
|
|
|
//! Returns properties of the object
|
|
|
|
|
const PIMap<PIString, PIVariant> & properties() const {return properties_;}
|
|
|
|
|
@@ -453,12 +454,15 @@ public:
|
|
|
|
|
|
|
|
|
|
//! Returns property with name "name"
|
|
|
|
|
PIVariant property(const PIString & name) const {if (!properties_.contains(name)) return PIVariant(); return properties_.value(name);}
|
|
|
|
|
PIVariant property(const char * name) const {return property(PIStringAscii(name));}
|
|
|
|
|
|
|
|
|
|
//! Set property with name "name" to "value". If there is no such property in object it will be added
|
|
|
|
|
void setProperty(const PIString & name, const PIVariant & value) {properties_[name] = value; propertyChanged(name);}
|
|
|
|
|
void setProperty(const char * name, const PIVariant & value) {setProperty(PIStringAscii(name), value);}
|
|
|
|
|
|
|
|
|
|
//! Returns if property with name "name" exists
|
|
|
|
|
bool isPropertyExists(const PIString & name) const {return properties_.contains(name);}
|
|
|
|
|
bool isPropertyExists(const char * name) const {return isPropertyExists(PIStringAscii(name));}
|
|
|
|
|
|
|
|
|
|
void setThreadSafe(bool yes) {thread_safe_ = yes;}
|
|
|
|
|
bool isThreadSafe() const {return thread_safe_;}
|
|
|
|
|
@@ -690,7 +694,7 @@ protected:
|
|
|
|
|
virtual void propertyChanged(const PIString & name) {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const PIString __classNameS() {return PIString("PIObject");}
|
|
|
|
|
static const PIString __classNameS() {return PIStringAscii("PIObject");}
|
|
|
|
|
|
|
|
|
|
EVENT(deleted)
|
|
|
|
|
|
|
|
|
|
|