DataSourceMetaItem::DataSourceMetaItem(unsigned _flags, MemoryBuffer & in) { flags = _flags; in.read(name); in.read(xpath); type.setown(deserializeType(in)); }
DataSourceMetaItem::DataSourceMetaItem(unsigned _flags, MemoryBuffer & in) { flags = _flags; in.read(name); in.read(xpath); type.setown(deserializeType(in)); splitXmlTagNamesFromXPath(xpath.get(), tagname); }
static IDefRecordElement * deserializeElement(MemoryBuffer & source) { byte kind; source.read(kind); switch (kind) { case DEKnone: return NULL; case DEKrecord: { size32_t maxSize; unsigned numChildren; source.read(maxSize).read(numChildren); Owned<IDefRecordBuilder> builder = createDErecord(maxSize); for (unsigned i=0; i < numChildren; i++) builder->addChildOwn(deserializeElement(source)); return builder->close(); } case DEKifblock: { Owned<IValue> value = deserializeValue(source); Owned<IDefRecordElement> field = deserializeElement(source); Owned<IDefRecordElement> record = deserializeElement(source); return createDEifblock(field, value, record); } case DEKfield: { _ATOM name = deserializeAtom(source); Owned<ITypeInfo> type = deserializeType(source); Owned<IDefRecordElement> record = deserializeElement(source); size32_t maxSize; source.read(maxSize); return createDEfield(name, type, record, maxSize); } default: throwUnexpected(); } }