14 #define epicsExportSharedSymbols 22 namespace epics {
namespace pvData {
29 data.resize(data.size()+number);
35 *it = pvDataCreate->createPVStructure(structure);
37 size_t newLength = data.size();
56 size_t length = vec.size();
58 for(
size_t i = offset;
i+number < length;
i++) {
59 vec[
i].swap(vec[
i + number]);
62 vec.resize(length - number);
75 size_t length = vec.
size();
78 for(
size_t i=0;
i<length;
i++) {
85 for(
size_t j=i+1;j<length;j++) {
92 vec[
i] = vec[notNull];
114 value = freeze(mvalue);
129 if (length == value.
size())
134 if (length < value.
size()) {
135 value.
slice(0, length);
139 value = freeze(mvalue);
164 this->
getArray()->getMaximumCapacity() :
173 for(
size_t i = 0;
i<size;
i++) {
175 size_t temp = pbuffer->
getByte();
180 if(data[
i].
get()==
NULL || !data[
i].unique()) {
181 data[
i] = pvDataCreate->createPVStructure(structure);
183 data[
i]->deserialize(pbuffer, pcontrol);
193 temp.
slice(offset, count);
198 else if (count != array->getMaximumCapacity())
199 throw std::length_error(
"fixed array cannot be partially serialized");
201 for(
size_t i = 0;
i<count;
i++) {
205 if(temp[
i].
get()==
NULL) {
210 temp[
i]->serialize(pbuffer, pflusher);
223 for (
size_t i = 0;
i < length;
i++)
233 if (index<temp.
size())
246 throw std::invalid_argument(
"destination is immutable");
249 throw std::invalid_argument(
"structureArray definitions do not match");
const std::string & getFieldName() const
void resize(size_t i)
Grow or shrink array.
virtual const_svector view() const OVERRIDE FINAL
Fetch a read-only view of the current array data.
::epics::pvData::shared_vector< T > svector
A holder for a contiguous piece of memory.
bool remove(std::size_t offset, std::size_t number)
EPICS_ALWAYS_INLINE int8 getByte()
#define THROW_EXCEPTION2(TYPE, MSG)
StructureArrayConstPtr getStructureArray() const
virtual void serialize(ByteBuffer *pbuffer, SerializableControl *pflusher) const OVERRIDE FINAL
shared_ptr< T > static_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
std::tr1::shared_ptr< const Array > ArrayConstPtr
void checkLength(size_t length) const
virtual void swap(const_svector &other) OVERRIDE FINAL
TODO only here because of the Lockable.
std::tr1::shared_ptr< const Structure > StructureConstPtr
static void writeSize(std::size_t s, ByteBuffer *buffer, SerializableControl *flusher)
void copy(const PVStructureArray &from)
static std::size_t readSize(ByteBuffer *buffer, DeserializableControl *control)
Callback class for deserialization.
virtual std::ostream & dumpValue(std::ostream &o) const OVERRIDE FINAL
std::size_t append(std::size_t number)
std::tr1::shared_ptr< PVDataCreate > PVDataCreatePtr
virtual void replace(const const_svector &next) OVERRIDE FINAL
virtual void flushSerializeBuffer()=0
virtual std::ostream & dumpValue(std::ostream &o) const OVERRIDE FINAL
virtual void deserialize(ByteBuffer *buffer, DeserializableControl *pflusher) OVERRIDE FINAL
virtual ArrayConstPtr getArray() const OVERRIDE FINAL
EPICS_ALWAYS_INLINE void putByte(int8 value)
This class implements a Bytebuffer that is like the java.nio.ByteBuffer.
virtual void swap(const_svector &other) OVERRIDE FINAL
std::size_t getRemaining() const
std::reverse_iterator< iterator > reverse_iterator
size_t size() const
Number of elements visible through this vector.
Data class for a structureArray.
virtual const_svector view() const OVERRIDE FINAL
Fetch a read-only view of the current array data.
bool isCapacityMutable() const
virtual void serialize(ByteBuffer *pbuffer, SerializableControl *pflusher) const OVERRIDE FINAL
virtual size_t getLength() const OVERRIDE FINAL
Callback class for serialization.
void copyUnchecked(const PVStructureArray &from)
void slice(size_t offset, size_t length=(size_t)-1)
Reduce the view of this shared_vector.
virtual void setLength(std::size_t length) OVERRIDE FINAL
virtual void ensureData(std::size_t size)=0
void reserve(size_t i)
Set array capacity.
void copyUnchecked(const PVScalarArray &from)
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()
virtual void setCapacity(size_t capacity) OVERRIDE FINAL
::epics::pvData::shared_vector< const T > const_svector