git-svn-id: svn://db.shs.com.ru/pip@838 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2019-08-10 11:48:57 +00:00
parent ae9c516994
commit 21fdf74ec0
4 changed files with 228 additions and 120 deletions

168
main.cpp
View File

@@ -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(&eth, 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;
}

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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