static bool UnPackFieldDefine(CMemoryStream & oStream, CRdbFieldDef& oDefine) { uint32 nLen; if(!oStream.Read(nLen)) return false; oDefine.sFieldName = new char[nLen+1]; if(!oStream.Read(oDefine.sFieldName, nLen+1)) return false; if(!oStream.Read(nLen)) return false; if(nLen) { oDefine.sDefault = new char[nLen+1]; if(!oStream.Read(oDefine.sDefault, nLen+1)) return false; } if(!oStream.Read(oDefine.nType)) return false; if(!oStream.Read(oDefine.nLen)) return false; if(!oStream.Read(oDefine.bNotNull)) return false; if(!oStream.Read(oDefine.nRecSize)) return false; return true; }
bool UnPackTableDefine(CMemoryStream & oStream, CRdbTableDef& oDefine) { uint32 nLen; CBinary::MemorySet(&oDefine, 0, sizeof(oDefine)); if(!oStream.Read(nLen)) return false; oDefine.sTableName = new char[nLen+1]; if(!oStream.Read(oDefine.sTableName, nLen+1)) return false; if(!oStream.Read(oDefine.nFieldCount)) return false; oDefine.pFieldDefines = new CRdbFieldDef[oDefine.nFieldCount]; CBinary::MemorySet(oDefine.pFieldDefines, 0, oDefine.nFieldCount*sizeof(CRdbFieldDef)); for(uint32 i=0; i<oDefine.nFieldCount; ++i) { if(!UnPackFieldDefine(oStream, oDefine.pFieldDefines[i])) return false; } if(!oStream.Read(oDefine.nStorage)) return false; return true; }
bool UnPackIndexDefine(CMemoryStream & oStream, CRdbIndexDef &oDefine) { uint32 nLen; CBinary::MemorySet(&oDefine, 0, sizeof(oDefine)); if(!oStream.Read(nLen)) return false; oDefine.sIndexName = new char[nLen+1]; if(!oStream.Read(oDefine.sIndexName, nLen+1)) return false; if(!oStream.Read(nLen)) return false; oDefine.sTableName = new char[nLen+1]; if(!oStream.Read(oDefine.sTableName, nLen+1)) return false; if(!oStream.Read(nLen)) return false; if(nLen) { oDefine.sPrimaryIndex = new char[nLen+1]; if(!oStream.Read(oDefine.sPrimaryIndex, nLen+1)) return false; } if(!oStream.Read(nLen)) return false; oDefine.pFieldList = new char[nLen+1]; if(!oStream.Read(oDefine.pFieldList, nLen+1)) return false; if(!oStream.Read(oDefine.nQualifier)) return false; if(!oStream.Read(oDefine.nArithmetic)) return false; if(!oStream.Read(oDefine.nHashRate)) return false; return true; }