void CdObjAttr::Loading(CdReader &Reader, TdVersion Version) { C_Int32 Cnt; Reader[VAR_ATTRCNT] >> Cnt; if (!fList.empty()) { vector<TdPair*>::iterator it; for (it = fList.begin(); it != fList.end(); it++) { TdPair *p = *it; *it = NULL; delete p; } fList.clear(); } if (Cnt > 0) { Reader[VAR_ATTRLIST].BeginStruct(); for (int i=0; i < Cnt; i++) { TdPair *I = new TdPair; try { I->name = Reader.Storage().RpUTF16(); Reader >> I->val; } catch (...) { delete I; break; } fList.push_back(I); } Reader.EndStruct(); }
void CdObject::LoadStruct(CdReader &Reader, TdVersion Version) { // call load function try { Loading(Reader, Version); #ifdef COREARRAY_CODE_USING_LOG Reader.Log().Add(CdLogRecord::logInfo, "==> %s [%s]", LogValue().c_str(), dName()); #endif } catch (exception &E) { Reader.Log().Add(E.what()); throw; } catch (const char *E) { Reader.Log().Add(E); throw; } }
void CdLogRecord::Loading(CdReader &Reader, TdVersion Version) { fList.clear(); C_UInt32 Cnt = 0; Reader[VAR_LOGSIZE] >> Cnt; if (Cnt > 0) { Reader[VAR_LOGDATA].BeginStruct(); for (C_UInt32 i=0; i < Cnt; i++) { UTF8String s = Reader.Storage().RpUTF8(); C_Int32 type; Reader.Storage() >> type; TdItem I; I.Msg = s; I.Type = type; fList.push_back(I); } Reader.EndStruct(); }