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

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