15 #define epicsExportSharedSymbols 29 return deserializeStructureFull(buffer, control);
32 PVStructure::shared_pointer SerializationHelper::deserializeStructureAndCreatePVStructure(
ByteBuffer* buffer,
DeserializableControl* control, PVStructure::shared_pointer
const & existingStructure)
36 return PVStructure::shared_pointer();
38 if (existingStructure && *field == *existingStructure->getField())
39 return existingStructure;
41 return _pvDataCreate->createPVStructure(std::tr1::static_pointer_cast<const Structure>(field));
43 throw std::runtime_error(
"deserializeStructureAndCreatePVStructure expects a Structure");
48 PVField::shared_pointer ret(deserializeFull(buffer, control));
49 if(!ret)
return PVStructure::shared_pointer();
50 else if(ret->getField()->getType()!=
structure)
51 throw std::runtime_error(
"deserializeStructureFull expects a Structure");
57 PVField::shared_pointer pvField;
61 pvField = _pvDataCreate->createPVField(field);
62 pvField->deserialize(buffer, control);
70 buffer->
putByte(IntrospectionRegistry::NULL_TYPE_CODE);
76 serializeStructureFull(buffer, control, pvRequest);
81 serializeFull(buffer, control, pvStructure);
88 serializeNullField(buffer, control);
93 pvField->serialize(buffer, control);
An EPICS-specific replacement for ANSI C's assert.
shared_ptr< T > static_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
TODO only here because of the Lockable.
Callback class for deserialization.
std::tr1::shared_ptr< PVDataCreate > PVDataCreatePtr
virtual std::tr1::shared_ptr< const Field > cachedDeserialize(ByteBuffer *buffer)=0
EPICS_ALWAYS_INLINE void putByte(int8 value)
This class implements a Bytebuffer that is like the java.nio.ByteBuffer.
Data interface for a structure,.
std::tr1::shared_ptr< const Field > FieldConstPtr
virtual void cachedSerialize(std::tr1::shared_ptr< const Field > const &field, ByteBuffer *buffer)=0
virtual void ensureBuffer(std::size_t size)=0
Callback class for serialization.
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()