git-svn-id: svn://db.shs.com.ru/pip@838 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
168
main.cpp
168
main.cpp
@@ -1,10 +1,112 @@
|
||||
#include "pip.h"
|
||||
#include "piintrospection_server.h"
|
||||
#include "piintrospection_containers_p.h"
|
||||
//#include <winsock2.h>
|
||||
|
||||
class CL: public PIObject {
|
||||
PIOBJECT(CL)
|
||||
public:
|
||||
EVENT_HANDLER1(void, nc, PIEthernet * , client) {
|
||||
piCout << "client" << client;
|
||||
}
|
||||
};
|
||||
|
||||
PIKbdListener kbd(0, 0, false);
|
||||
#include <typeinfo>
|
||||
#define PIIS_TYPENAME(t) typeid(t).name()
|
||||
|
||||
template<typename T> class Name
|
||||
{
|
||||
public:
|
||||
static const char * name() {return PIIS_TYPENAME(T);}
|
||||
};
|
||||
|
||||
PISystemMonitor sys_mon;
|
||||
|
||||
|
||||
|
||||
class TestRec: public PIObject {
|
||||
PIOBJECT(TestRec)
|
||||
public:
|
||||
EVENT_HANDLER(void, reinitSpec) {piCout << "reinitSpec";int a = 10; (void*)&a;}
|
||||
|
||||
EVENT_HANDLER(void, coeffsChanged) {piCout << "coeffsChanged";}
|
||||
EVENT_HANDLER(void, guiAboutSend) {piCout << "guiAboutSend";}
|
||||
EVENT_HANDLER(void, guiAfterSend) {piCout << "guiAfterSend";}
|
||||
EVENT_HANDLER(void, guiReceived) {piCout << "guiReceived";}
|
||||
|
||||
EVENT_HANDLER(void, playerReceived) {piCout << "playerReceived";int a = 10; (void*)&a;}
|
||||
|
||||
EVENT_HANDLER(void, playerValuesReceived) {piCout << "playerValuesReceived";}
|
||||
EVENT_HANDLER(void, calculate) {piCout << "calculate";}
|
||||
EVENT_HANDLER(void, autostart) {piCout << "autostart";}
|
||||
|
||||
EVENT_HANDLER(void, syncOff) {piCout << "syncOff";int a = 10; (void*)&a;}
|
||||
|
||||
EVENT_HANDLER(void, del) {piCout << "DEL";}
|
||||
};
|
||||
|
||||
class TestSnd: public PIObject {
|
||||
PIOBJECT_SUBCLASS(TestSnd, PIObject)
|
||||
public:
|
||||
EVENT(reinitSpec)
|
||||
EVENT(coeffsChanged)
|
||||
EVENT(guiAboutSend)
|
||||
EVENT(guiAfterSend)
|
||||
EVENT(guiReceived)
|
||||
EVENT(playerReceived)
|
||||
EVENT(playerValuesReceived)
|
||||
EVENT(calculate)
|
||||
EVENT(autostart)
|
||||
EVENT(syncOff)
|
||||
};
|
||||
|
||||
#define CONN(sn) CONNECTU(snd, sn, rec, sn)
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
PIMap<int, PIVector<int> > x;
|
||||
x[3] << 5;
|
||||
piCout << x;
|
||||
x.remove(3);
|
||||
//sys_mon.startOnSelf();
|
||||
|
||||
PITimeMeasurer tm;
|
||||
|
||||
TestRec * rec = 0;
|
||||
TestSnd * snd = 0;
|
||||
|
||||
for (int i = 0; i < 1; ++i) {
|
||||
if (rec) delete rec;
|
||||
if (snd) delete snd;
|
||||
rec = new TestRec();
|
||||
snd = new TestSnd();
|
||||
}
|
||||
|
||||
CONNECTU(snd, deleted, rec, del)
|
||||
CONN(reinitSpec)
|
||||
CONN(coeffsChanged)
|
||||
CONN(guiAboutSend)
|
||||
CONN(guiAfterSend)
|
||||
CONN(guiReceived)
|
||||
CONN(playerReceived)
|
||||
CONN(playerValuesReceived)
|
||||
CONN(calculate)
|
||||
CONN(autostart)
|
||||
CONN(syncOff);
|
||||
|
||||
// 0.6 us on call
|
||||
for (int j = 0; j < 10; ++j) {
|
||||
tm.reset();
|
||||
for (int i = 0; i < 10000; ++i) {
|
||||
snd->reinitSpec();
|
||||
snd->playerReceived();
|
||||
snd->syncOff();
|
||||
}
|
||||
double el = tm.elapsed_m();
|
||||
piCout << el;
|
||||
}
|
||||
|
||||
//snd->dump();
|
||||
|
||||
delete snd;
|
||||
delete rec;
|
||||
|
||||
PIString s;
|
||||
s = "gafaffaf";
|
||||
piCout << s;
|
||||
@@ -12,4 +114,62 @@ int main(int argc, char * argv[]) {
|
||||
s = "dd";
|
||||
piCout << s;
|
||||
return 0;
|
||||
|
||||
PIINTROSPECTION_START;
|
||||
//uint id = standardCRC_32().calculate("6PIChar");
|
||||
//PIIntrospectionContainers * ci = PIINTROSPECTION_CONTAINERS->p;
|
||||
FOREVER {
|
||||
piMSleep(100);
|
||||
//piCout << ci->data[id].count << ci->data[id].bytes_allocated << ci->data[id].bytes_used;
|
||||
}
|
||||
return 0;
|
||||
|
||||
PICLI cli(argc, argv);
|
||||
cli.setDebug(false);
|
||||
cli.addArgument("send");
|
||||
//PISystemInfo::machineID();
|
||||
kbd.enableExitCapture();
|
||||
kbd.start();
|
||||
|
||||
if (cli.hasArgument("send")) {
|
||||
/*piCout << "send mode";
|
||||
PIEthernet eth;
|
||||
eth.setSendAddress(cli.rawArguments().back() + ":15123");
|
||||
eth.open();
|
||||
while (!kbd.exiting) {
|
||||
eth.send(PIByteArray("test string", 12));
|
||||
piMSleep(500);
|
||||
}*/
|
||||
PIEthernet eth(PIEthernet::TCP_Server);
|
||||
eth.listen(cli.rawArguments().back() + ":15123", true);
|
||||
//eth.open();
|
||||
CL cl;
|
||||
CONNECTU(ð, newConnection, &cl, nc);
|
||||
|
||||
WAIT_FOR_EXIT;
|
||||
piCout << "exiting ...";
|
||||
|
||||
} else {
|
||||
piCout << "recv mode";
|
||||
PIEthernet eth(PIEthernet::TCP_Client);
|
||||
//eth.setReadAddress(cli.rawArguments().back() + ":15123");
|
||||
eth.startThreadedRead();
|
||||
int s = eth.socket();
|
||||
piCout << s;
|
||||
piCout << "connect ...";
|
||||
eth.connect(cli.rawArguments().back() + /*":13361"*/":15123");
|
||||
piCout << "connect done" << eth.isConnected();
|
||||
//fcntl(fd, F_SETFL, O_NONBLOCK);
|
||||
|
||||
WAIT_FOR_EXIT;
|
||||
piCout << "exiting ...";
|
||||
|
||||
}
|
||||
/*PIThread t;
|
||||
t.start(10);
|
||||
//WAIT_FOR_EXIT;
|
||||
piSleep(20.);
|
||||
t.stop(true);*/
|
||||
piCout << "exit main ...";
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -182,14 +182,14 @@ PIStringList PIObject::events() {
|
||||
|
||||
PIStringList PIObject::scopeList() const {
|
||||
PIMutexLocker ml(__meta_mutex());
|
||||
return __meta_data()[className()].scope_list;
|
||||
return __meta_data()[classNameID()].scope_list;
|
||||
}
|
||||
|
||||
|
||||
PIStringList PIObject::methodsEH() const {
|
||||
PIMutexLocker ml(__meta_mutex());
|
||||
PIStringList ret;
|
||||
__MetaData & ehd(__meta_data()[className()]);
|
||||
__MetaData & ehd(__meta_data()[classNameID()]);
|
||||
piForeachC (__EHPair & eh, ehd.eh_func)
|
||||
ret << eh.second.fullFormat();
|
||||
return ret;
|
||||
@@ -198,7 +198,7 @@ PIStringList PIObject::methodsEH() const {
|
||||
|
||||
bool PIObject::isMethodEHContains(const PIString & name) const {
|
||||
PIMutexLocker ml(__meta_mutex());
|
||||
__MetaData & ehd(__meta_data()[className()]);
|
||||
__MetaData & ehd(__meta_data()[classNameID()]);
|
||||
piForeachC (__EHPair & eh, ehd.eh_func)
|
||||
if (eh.second.func_name == name)
|
||||
return true;
|
||||
@@ -208,7 +208,7 @@ bool PIObject::isMethodEHContains(const PIString & name) const {
|
||||
|
||||
PIString PIObject::methodEHArguments(const PIString & name) const {
|
||||
PIMutexLocker ml(__meta_mutex());
|
||||
__MetaData & ehd(__meta_data()[className()]);
|
||||
__MetaData & ehd(__meta_data()[classNameID()]);
|
||||
piForeachC (__EHPair & eh, ehd.eh_func)
|
||||
if (eh.second.func_name == name)
|
||||
return eh.second.arguments();
|
||||
@@ -218,7 +218,7 @@ PIString PIObject::methodEHArguments(const PIString & name) const {
|
||||
|
||||
PIString PIObject::methodEHFullFormat(const PIString & name) const {
|
||||
PIMutexLocker ml(__meta_mutex());
|
||||
__MetaData & ehd(__meta_data()[className()]);
|
||||
__MetaData & ehd(__meta_data()[classNameID()]);
|
||||
piForeachC (__EHPair & eh, ehd.eh_func)
|
||||
if (eh.second.func_name == name)
|
||||
return eh.second.fullFormat();
|
||||
@@ -233,7 +233,7 @@ PIString PIObject::methodEHFromAddr(const void * addr) const {
|
||||
|
||||
PIVector<PIObject::__MetaFunc> PIObject::findEH(const PIString & name) const {
|
||||
PIVector<__MetaFunc> ret;
|
||||
__MetaData & ehd(__meta_data()[className()]);
|
||||
__MetaData & ehd(__meta_data()[classNameID()]);
|
||||
piForeachC (__EHPair & eh, ehd.eh_func)
|
||||
if (eh.second.func_name == name)
|
||||
ret << eh.second;
|
||||
@@ -243,7 +243,7 @@ PIVector<PIObject::__MetaFunc> PIObject::findEH(const PIString & name) const {
|
||||
|
||||
PIObject::__MetaFunc PIObject::methodEH(const void * addr) const {
|
||||
PIMutexLocker ml(__meta_mutex());
|
||||
return __meta_data()[className()].eh_func.value(addr);
|
||||
return __meta_data()[classNameID()].eh_func.value(addr);
|
||||
}
|
||||
|
||||
|
||||
@@ -418,12 +418,24 @@ PIMutex & PIObject::__meta_mutex() {
|
||||
}
|
||||
|
||||
|
||||
PIMap<PIString, PIObject::__MetaData> & PIObject::__meta_data() {
|
||||
static PIMap<PIString, PIObject::__MetaData> ret;
|
||||
PIMap<uint, PIObject::__MetaData> & PIObject::__meta_data() {
|
||||
static PIMap<uint, PIObject::__MetaData> ret;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
CRC_32 & PIObject::__meta_crc() {
|
||||
static CRC_32 ret = standardCRC_32();
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
uint PIObject::__string_id(const PIString & s) {
|
||||
if (s.isEmpty()) return 0;
|
||||
return __meta_crc().calculate(s.toByteArray());
|
||||
}
|
||||
|
||||
|
||||
void PIObject::callQueuedEvents() {
|
||||
mutex_queue.lock();
|
||||
PIVector<__QueuedEvent> qe = events_queue;
|
||||
@@ -538,7 +550,7 @@ void PIObject::dump(const PIString & line_prefix) const {
|
||||
//printf("dump %d properties ok\n", properties_.size());
|
||||
PICout(PICoutManipulators::AddNewLine) << line_prefix << " }";
|
||||
PICout(PICoutManipulators::AddNewLine) << line_prefix << " methods {";
|
||||
__MetaData & ehd(__meta_data()[className()]);
|
||||
__MetaData & ehd(__meta_data()[classNameID()]);
|
||||
PICout(PICoutManipulators::AddNewLine) << line_prefix << " count: " << ehd.eh_func.size_s();
|
||||
//printf("dump %d methods\n", ehd.eh_func.size());
|
||||
piForeachC (__EHPair & eh, ehd.eh_func) {
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "pimutex.h"
|
||||
#include "piset.h"
|
||||
#include "piqueue.h"
|
||||
#include "picrc.h"
|
||||
|
||||
|
||||
#ifdef DOXYGEN
|
||||
@@ -198,7 +199,9 @@
|
||||
typedef name __PIObject__; \
|
||||
public: \
|
||||
static const PIString __classNameS() {return PIStringAscii(#name);} \
|
||||
static const uint __classNameIDS() {static uint ret = __string_id(PIStringAscii(#name)); return ret;} \
|
||||
virtual const char * className() const {return #name;} \
|
||||
virtual const uint classNameID() const {static uint ret = __string_id(PIStringAscii(#name)); return ret;} \
|
||||
private: \
|
||||
virtual int ptrOffset() const {name * o = (name*)100; return int(llong((PIObject*)o) - llong(o));}
|
||||
|
||||
@@ -206,14 +209,15 @@
|
||||
class __##name##_ParentInitializer__ { \
|
||||
public: \
|
||||
__##name##_ParentInitializer__() { \
|
||||
PIString pn(name::__classNameS()); \
|
||||
if (pn.isEmpty()) return; \
|
||||
uint pid = name::__classNameIDS(); \
|
||||
if (pid == 0) return; \
|
||||
uint id = __classNameIDS(); \
|
||||
PIMutexLocker ml(__meta_mutex()); \
|
||||
if (__meta_data().contains(__classNameS())) return; \
|
||||
__meta_data()[pn]; \
|
||||
__meta_data()[__classNameS()]; \
|
||||
__MetaData & ehp(__meta_data()[pn]); \
|
||||
__MetaData & eh(__meta_data()[__classNameS()]); \
|
||||
if (__meta_data().contains(id)) return; \
|
||||
__meta_data()[pid]; \
|
||||
__meta_data()[id]; \
|
||||
__MetaData & ehp(__meta_data()[pid]); \
|
||||
__MetaData & eh(__meta_data()[id]); \
|
||||
eh.eh_set << ehp.eh_set; \
|
||||
eh.eh_func << ehp.eh_func; \
|
||||
eh.scope_list = ehp.scope_list; \
|
||||
@@ -234,7 +238,7 @@
|
||||
public: \
|
||||
__##name##0_Initializer__() { \
|
||||
PIMutexLocker ml(__meta_mutex()); \
|
||||
__MetaData & eh(__meta_data()[__classNameS()]); \
|
||||
__MetaData & eh(__meta_data()[__classNameIDS()]); \
|
||||
void * fp = (void*)(ret(*)(void*))__stat_eh_##name##__; \
|
||||
void * fpV = fp; \
|
||||
if (eh.eh_set[fp]) return; \
|
||||
@@ -254,7 +258,7 @@
|
||||
public: \
|
||||
__##name##1##n0##_Initializer__() { \
|
||||
PIMutexLocker ml(__meta_mutex()); \
|
||||
__MetaData & eh(__meta_data()[__classNameS()]); \
|
||||
__MetaData & eh(__meta_data()[__classNameIDS()]); \
|
||||
void * fp = (void*)(ret(*)(void*, a0))__stat_eh_##name##__; \
|
||||
void * fpV = (void*)(ret(*)(void*, const PIVariant &))__stat_eh_v_##name##__; \
|
||||
if (eh.eh_set[fp]) return; \
|
||||
@@ -276,7 +280,7 @@
|
||||
public: \
|
||||
__##name##2##n0##n1##_Initializer__() { \
|
||||
PIMutexLocker ml(__meta_mutex()); \
|
||||
__MetaData & eh(__meta_data()[__classNameS()]); \
|
||||
__MetaData & eh(__meta_data()[__classNameIDS()]); \
|
||||
void * fp = (void*)(ret(*)(void*, a0, a1))__stat_eh_##name##__; \
|
||||
void * fpV = (void*)(ret(*)(void*, const PIVariant &, const PIVariant &))__stat_eh_v_##name##__; \
|
||||
if (eh.eh_set[fp]) return; \
|
||||
@@ -298,7 +302,7 @@
|
||||
public: \
|
||||
__##name##3##n0##n1##n2##_Initializer__() { \
|
||||
PIMutexLocker ml(__meta_mutex()); \
|
||||
__MetaData & eh(__meta_data()[__classNameS()]); \
|
||||
__MetaData & eh(__meta_data()[__classNameIDS()]); \
|
||||
void * fp = (void*)(ret(*)(void*, a0, a1, a2))__stat_eh_##name##__; \
|
||||
void * fpV = (void*)(ret(*)(void*, const PIVariant &, const PIVariant &, const PIVariant &))__stat_eh_v_##name##__; \
|
||||
if (eh.eh_set[fp]) return; \
|
||||
@@ -320,7 +324,7 @@
|
||||
public: \
|
||||
__##name##4##n0##n1##n2##n3##_Initializer__() { \
|
||||
PIMutexLocker ml(__meta_mutex()); \
|
||||
__MetaData & eh(__meta_data()[__classNameS()]); \
|
||||
__MetaData & eh(__meta_data()[__classNameIDS()]); \
|
||||
void * fp = (void*)(ret(*)(void*, a0, a1, a2, a3))__stat_eh_##name##__; \
|
||||
void * fpV = (void*)(ret(*)(void*, const PIVariant &, const PIVariant &, const PIVariant &, const PIVariant &))__stat_eh_v_##name##__; \
|
||||
if (eh.eh_set[fp]) return; \
|
||||
@@ -416,11 +420,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) {static uint eid = __string_id(PIStringAscii(#name)); PIObject::raiseEvent(this, eid);}
|
||||
#define EVENT1(name, a0, n0) EVENT_HANDLER1(void, name, a0, n0) {static uint eid = __string_id(PIStringAscii(#name)); PIObject::raiseEvent(this, eid, n0);}
|
||||
#define EVENT2(name, a0, n0, a1, n1) EVENT_HANDLER2(void, name, a0, n0, a1, n1) {static uint eid = __string_id(PIStringAscii(#name)); PIObject::raiseEvent(this, eid, n0, n1);}
|
||||
#define EVENT3(name, a0, n0, a1, n1, a2, n2) EVENT_HANDLER3(void, name, a0, n0, a1, n1, a2, n2) {static uint eid = __string_id(PIStringAscii(#name)); PIObject::raiseEvent(this, eid, 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) {static uint eid = __string_id(PIStringAscii(#name)); PIObject::raiseEvent(this, eid, n0, n1, n2, n3);}
|
||||
#define EVENT EVENT0
|
||||
|
||||
#define RAISE_EVENT0(src, event) (src)->event();
|
||||
@@ -483,14 +487,16 @@ private:
|
||||
|
||||
public:
|
||||
|
||||
|
||||
//! Returns object name
|
||||
PIString name() const {return property(PIStringAscii("name")).toString();}
|
||||
|
||||
//! Returns object class name
|
||||
virtual const char * className() const {return "PIObject";}
|
||||
|
||||
virtual const uint classNameID() const {static uint ret = __string_id(PIStringAscii("PIObject")); return ret;}
|
||||
|
||||
static const PIString __classNameS() {return PIStringAscii("PIObject");}
|
||||
static const uint __classNameIDS() {static uint ret = __string_id(PIStringAscii("PIObject")); return ret;}
|
||||
|
||||
//! Returns parent object class name
|
||||
virtual const char * parentClassName() const {return "";}
|
||||
@@ -566,33 +572,6 @@ public:
|
||||
PIString methodEHFullFormat(const PIString & name) const;
|
||||
PIString methodEHFromAddr(const void * addr) const;
|
||||
|
||||
/*
|
||||
template <typename RS, typename RD>
|
||||
static void piConnectU(PIObject * src, RS(*sig)(void*), PIObject * dest, RD(*slt)(void*), PIString signame) {
|
||||
src->connections << PIObject::Connection((void*)slt, (void*)sig, signame, dest);
|
||||
}
|
||||
template <typename RS, typename RD, typename A0>
|
||||
static void piConnectU(PIObject * src, RS(*sig)(void*,A0), PIObject * dest, RD(*slt)(void*,A0), PIString signame) {
|
||||
src->connections << PIObject::Connection((void*)slt, (void*)sig, signame, dest);
|
||||
}
|
||||
template <typename RS, typename RD, typename A0, typename A1>
|
||||
static void piConnectU(PIObject * src, RS(*sig)(void*,A0,A1), PIObject * dest, RD(*slt)(void*,A0,A1), PIString signame) {
|
||||
src->connections << PIObject::Connection((void*)slt, (void*)sig, signame, dest);
|
||||
}
|
||||
template <typename RS, typename RD, typename A0, typename A1, typename A2>
|
||||
static void piConnectU(PIObject * src, RS(*sig)(void*,A0,A1,A2), PIObject * dest, RD(*slt)(void*,A0,A1,A2), PIString signame) {
|
||||
src->connections << PIObject::Connection((void*)slt, (void*)sig, signame, dest);
|
||||
}
|
||||
template <typename RS, typename RD, typename A0, typename A1, typename A2, typename A3>
|
||||
static void piConnectU(PIObject * src, RS(*sig)(void*,A0,A1,A2,A3), PIObject * dest, RD(*slt)(void*,A0,A1,A2,A3), PIString signame) {
|
||||
src->connections << PIObject::Connection((void*)slt, (void*)sig, signame, dest);
|
||||
}
|
||||
template <typename RS, typename RD, typename A0, typename A1, typename A2, typename A3, typename A4>
|
||||
static void piConnectU(PIObject * src, RS(*sig)(void*,A0,A1,A2,A3,A4), PIObject * dest, RD(*slt)(void*,A0,A1,A2,A3,A4), PIString signame) {
|
||||
src->connections << PIObject::Connection((void*)slt, (void*)sig, signame, dest);
|
||||
}
|
||||
*/
|
||||
|
||||
// / Direct connect
|
||||
static void piConnect(PIObject * src, const PIString & sig, PIObject * dest_o, void * dest, void * ev_h, void * e_h, int args, const char * loc);
|
||||
static bool piConnectU(PIObject * src, const PIString & ename, PIObject * dest_o, void * dest, const PIString & hname, const char * loc, PIObject * performer = 0);
|
||||
@@ -613,10 +592,10 @@ public:
|
||||
static void piDisconnect(PIObject * src);
|
||||
|
||||
// / Raise events
|
||||
static void raiseEvent(PIObject * sender, const char * event) {
|
||||
static void raiseEvent(PIObject * sender, const uint eventID) {
|
||||
for (int j = 0; j < sender->connections.size_s(); ++j) {
|
||||
__Connection & i(sender->connections[j]);
|
||||
if (strcmp(i.event.dataAscii(), event) != 0) continue;
|
||||
if (i.eventID != eventID) continue;
|
||||
if (i.performer) {
|
||||
i.performer->postQueuedEvent(__QueuedEvent(i.slot, i.dest, i.dest_o, sender));
|
||||
} else {
|
||||
@@ -630,10 +609,10 @@ public:
|
||||
}
|
||||
|
||||
template <typename T0>
|
||||
static void raiseEvent(PIObject * sender, const char * event, const T0 & v0 = T0()) {
|
||||
static void raiseEvent(PIObject * sender, const uint eventID, const T0 & v0 = T0()) {
|
||||
for (int j = 0; j < sender->connections.size_s(); ++j) {
|
||||
__Connection & i(sender->connections[j]);
|
||||
if (strcmp(i.event.dataAscii(), event) != 0) continue;
|
||||
if (i.eventID != eventID) continue;
|
||||
if (i.performer) {
|
||||
PIVector<PIVariant> vl;
|
||||
if (i.args_count > 0) vl << PIVariant::fromValue(v0);
|
||||
@@ -649,10 +628,10 @@ public:
|
||||
}
|
||||
}
|
||||
template <typename T0, typename T1>
|
||||
static void raiseEvent(PIObject * sender, const char * event, const T0 & v0 = T0(), const T1 & v1 = T1()) {
|
||||
static void raiseEvent(PIObject * sender, const uint eventID, const T0 & v0 = T0(), const T1 & v1 = T1()) {
|
||||
for (int j = 0; j < sender->connections.size_s(); ++j) {
|
||||
__Connection & i(sender->connections[j]);
|
||||
if (strcmp(i.event.dataAscii(), event) != 0) continue;
|
||||
if (i.eventID != eventID) continue;
|
||||
if (i.performer) {
|
||||
PIVector<PIVariant> vl;
|
||||
if (i.args_count > 0) vl << PIVariant::fromValue(v0);
|
||||
@@ -672,10 +651,10 @@ public:
|
||||
}
|
||||
}
|
||||
template <typename T0, typename T1, typename T2>
|
||||
static void raiseEvent(PIObject * sender, const char * event, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2()) {
|
||||
static void raiseEvent(PIObject * sender, const uint eventID, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2()) {
|
||||
for (int j = 0; j < sender->connections.size_s(); ++j) {
|
||||
__Connection & i(sender->connections[j]);
|
||||
if (strcmp(i.event.dataAscii(), event) != 0) continue;
|
||||
if (i.eventID != eventID) continue;
|
||||
if (i.performer) {
|
||||
PIVector<PIVariant> vl;
|
||||
if (i.args_count > 0) vl << PIVariant::fromValue(v0);
|
||||
@@ -697,10 +676,10 @@ public:
|
||||
}
|
||||
}
|
||||
template <typename T0, typename T1, typename T2, typename T3>
|
||||
static void raiseEvent(PIObject * sender, const char * event, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2(), const T3 & v3 = T3()) {
|
||||
static void raiseEvent(PIObject * sender, const uint eventID, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2(), const T3 & v3 = T3()) {
|
||||
for (int j = 0; j < sender->connections.size_s(); ++j) {
|
||||
__Connection & i(sender->connections[j]);
|
||||
if (strcmp(i.event.dataAscii(), event) != 0) continue;
|
||||
if (i.eventID != eventID) continue;
|
||||
if (i.performer) {
|
||||
PIVector<PIVariant> vl;
|
||||
if (i.args_count > 0) vl << PIVariant::fromValue(v0);
|
||||
@@ -724,54 +703,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// / Raise events through manager
|
||||
static void raiseEvent(const PIString & destObject, const PIString & name) {
|
||||
PIObject * dest = findByName(destObject);
|
||||
if (dest == 0) {
|
||||
cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl;
|
||||
return;
|
||||
}
|
||||
raiseEvent(dest, name);
|
||||
}
|
||||
template <typename T0>
|
||||
static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0()) {
|
||||
PIObject * dest = findByName(destObject);
|
||||
if (dest == 0) {
|
||||
cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl;
|
||||
return;
|
||||
}
|
||||
raiseEvent<T0>(dest, name, v0);
|
||||
}
|
||||
template <typename T0, typename T1>
|
||||
static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1()) {
|
||||
PIObject * dest = findByName(destObject);
|
||||
if (dest == 0) {
|
||||
cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl;
|
||||
return;
|
||||
}
|
||||
raiseEvent<T0, T1>(dest, name, v0, v1);
|
||||
}
|
||||
template <typename T0, typename T1, typename T2>
|
||||
static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2()) {
|
||||
PIObject * dest = findByName(destObject);
|
||||
if (dest == 0) {
|
||||
cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl;
|
||||
return;
|
||||
}
|
||||
raiseEvent<T0, T1, T2>(name, dest, v0, v1, v2);
|
||||
}
|
||||
template <typename T0, typename T1, typename T2, typename T3>
|
||||
static void raiseEvent(const PIString & destObject, const PIString & name, const T0 & v0 = T0(), const T1 & v1 = T1(), const T2 & v2 = T2(), const T3 & v3 = T3()) {
|
||||
PIObject * dest = findByName(destObject);
|
||||
if (dest == 0) {
|
||||
cout << "PIObject::piConnect: can`t find PIObject with \"" << destObject << "\" name!" << endl;
|
||||
return;
|
||||
}
|
||||
raiseEvent<T0, T1, T2, T3>(name,dest , v0, v1, v2, v3);
|
||||
}
|
||||
*/
|
||||
|
||||
//! Returns PIObject* with name "name" or 0, if there is no object found
|
||||
static PIObject * findByName(const PIString & name) {
|
||||
PIMutexLocker _ml(mutexObjects());
|
||||
@@ -826,7 +757,10 @@ public:
|
||||
typedef PIPair<const void * , __MetaFunc> __EHPair;
|
||||
|
||||
static PIMutex & __meta_mutex();
|
||||
static PIMap<PIString, __MetaData> & __meta_data(); // [classname]=__MetaData
|
||||
static PIMap<uint, __MetaData> & __meta_data(); // [__string_id(classname)]=__MetaData
|
||||
|
||||
static CRC_32 & __meta_crc();
|
||||
static uint __string_id(const PIString & s);
|
||||
|
||||
//! \brief Execute all posted events from CONNECTU_QUEUED connections
|
||||
void callQueuedEvents();
|
||||
@@ -862,6 +796,7 @@ private:
|
||||
slot = sl;
|
||||
signal = si;
|
||||
event = e;
|
||||
eventID = __string_id(e);
|
||||
dest_o = d_o;
|
||||
dest = d;
|
||||
args_count = ac;
|
||||
@@ -870,6 +805,7 @@ private:
|
||||
void * slot;
|
||||
void * signal;
|
||||
PIString event;
|
||||
uint eventID;
|
||||
PIObject * dest_o;
|
||||
PIObject * performer;
|
||||
void * dest;
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
#define PIP_VERSION_MAJOR 1
|
||||
#define PIP_VERSION_MINOR 10
|
||||
#define PIP_VERSION_REVISION 0
|
||||
#define PIP_VERSION_SUFFIX "_alpha"
|
||||
#define PIP_VERSION_SUFFIX "_beta"
|
||||
|
||||
#endif // PIVERSION_H
|
||||
|
||||
Reference in New Issue
Block a user