示例#1
0
文件: dFile.cpp 项目: cran/gdsfmt
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();
	}
示例#2
0
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;
	}
}
示例#3
0
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();
	}