std::size_t RawSize<Variant>(const Variant& var) { const uint8_t encodingMask = 0; std::size_t size = RawSize(encodingMask); if (var.IsNul()) { return size; } std::size_t valueSize = 0; if (var.IsArray()) { ApplyToVariantValue(var.Type, var.Value, RawValueSizeArray, valueSize); } else { ApplyToVariantValue(var.Type, var.Value, RawValueSize, valueSize); } size += valueSize; if (!var.Dimensions.empty()) { size += RawSizeContainer(var.Dimensions); } return size; }
std::size_t RawSize<DataValue>(const DataValue& val) { std::size_t size = RawSize(val.Encoding); if (val.Encoding & DATA_VALUE) { size += RawSize(val.Value); } if (val.Encoding & DATA_VALUE_STATUS_CODE) { size += RawSize(val.Status); } if (val.Encoding & DATA_VALUE_SOURCE_TIMESTAMP) { size += RawSize(val.SourceTimestamp); } if (val.Encoding & DATA_VALUE_Server_TIMESTAMP) { size += RawSize(val.ServerTimestamp); } if (val.Encoding & DATA_VALUE_SOURCE_PICOSECONDS) { size += RawSize(val.SourcePicoseconds); } if (val.Encoding & DATA_VALUE_Server_PICOSECONDS) { size += RawSize(val.ServerPicoseconds); } return size; }
std::size_t RawSize<SessionParameters>(const SessionParameters& params) { return RawSize(params.ClientDescription) + RawSize(params.ServerURI) + RawSize(params.EndpointURL) + RawSize(params.SessionName) + RawSize(params.ClientNonce) + RawSize(params.ClientCertificate) + sizeof(params.RequestedSessionTimeout) + sizeof(params.MaxResponseMessageSize); }
char* gstGeodeCollection::ToRaw(char* buf) const { int buff_size = RawSize(); // passing NULL means we allocate space if (buf == NULL) buf = reinterpret_cast<char*>(malloc(buff_size * sizeof(char))); RecHeader *hdr = reinterpret_cast<RecHeader*>(buf); hdr->type = PrimType(); hdr->count = NumParts(); hdr->size = buff_size; // size of this object hdr->fid = 0; // feature id char *tbuf = buf + sizeof(RecHeader); for (GeodeList::const_iterator it = geodes_.begin(); it != geodes_.end(); ++it) { (*it)->ToRaw(tbuf); tbuf += (*it)->RawSize(); } return buf; }
std::size_t RawSize<ViewDescription>(const ViewDescription & desc) { return RawSize(desc.Id) + RawSize(desc.Timestamp) + RawSize(desc.Version); }
std::size_t RawSize<AttributeValueID>(const AttributeValueID& attr) { return RawSize(attr.Node) + RawSize(attr.Attribute) + RawSize(attr.IndexRange) + RawSize(attr.DataEncoding); }
std::size_t RawSize<UserIdentifyToken::UserNameStruct>(const UserIdentifyToken::UserNameStruct& uname) { return RawSize(uname.UserName) + RawSize(uname.Password) + RawSize(uname.EncryptionAlgorithm); }