27#include <vrs/DataLayout.h>
28#include <vrs/DataPieceTypes.h>
29#include <vrs/VrsExport.h>
112 return fixedSize_ != DataLayout::kVariableSize;
123 bool getTag(
const string& tagName,
string& outTag)
const;
127 void setTag(
const string& tagName,
const string& tag) {
128 tags_[tagName] = tag;
134 return getTag(kUnit, outUnit);
146 return getTag(kDescription, outDescription);
151 tags_[kDescription] = description;
157 required_ = required;
185 return layout_.isMapped() && pieceIndex_ != DataLayout::kNotFound;
191 virtual void print(ostream& out,
const string& indent =
"")
const = 0;
196 virtual void printCompact(ostream& out,
const string& indent =
"")
const = 0;
207 return isAvailable();
216 virtual unique_ptr<DataPiece>
clone()
const = 0;
220 bool isMatch(
const DataPiece& rhs)
const;
222 virtual bool isSame(
const DataPiece* rhs)
const;
223 void setIndexOffset(
size_t pieceIndex,
size_t offset) {
224 pieceIndex_ = pieceIndex;
232 const size_t fixedSize_;
236 map<string, string> tags_;
247inline const string& getTypeName<string>() {
248 static const string sName(
"string");
255#define POD_MACRO(x) \
257 VRS_API const string& getTypeName<x>();
258#include <vrs/helpers/PODMacro.inc>
286 memcpy(
reinterpret_cast<char*
>(dst),
reinterpret_cast<const char*
>(src), size);
292#ifndef DATA_PIECES_ARRAY_H
293#include <vrs/DataPieceArray.h>
296#ifndef DATA_PIECES_STRING_H
297#include <vrs/DataPieceString.h>
300#ifndef DATA_PIECES_STRING_MAP_H
301#include <vrs/DataPieceStringMap.h>
304#ifndef DATA_PIECES_VALUE_H
305#include <vrs/DataPieceValue.h>
308#ifndef DATA_PIECES_VECTOR_H
309#include <vrs/DataPieceVector.h>
The DataLayout class describes the data stored inside a DataLayoutContentBlock.
Definition DataLayout.h:211
Abstract class representing a piece of information part of a DataLayout.
Definition DataPieces.h:42
static const string kMinIncrement
Special property name for the minimum increment of the DataPiece.
Definition DataPieces.h:65
void setRequired(bool required=true)
Definition DataPieces.h:156
size_t getPieceIndex() const
Definition DataPieces.h:95
bool getDescription(string &outDescription) const
Definition DataPieces.h:145
static const string kMaxValue
Special property name for the maximum value of the DataPiece.
Definition DataPieces.h:63
bool isRequired() const
Definition DataPieces.h:162
void setDescription(const string &description)
Definition DataPieces.h:150
bool getUnit(string &outUnit) const
Definition DataPieces.h:133
static const string kMaxIncrement
Special property name for the maximum increment of the DataPiece.
Definition DataPieces.h:67
virtual void printCompact(ostream &out, const string &indent="") const =0
virtual void initToDefault()=0
virtual size_t collectVariableData(int8_t *data, size_t bufferSize)=0
virtual bool copyFrom(const DataPiece *original)=0
Set or stage value from another piece known to be of the same type.
virtual bool stageCurrentValue()
Definition DataPieces.h:206
bool hasFixedSize() const
Definition DataPieces.h:111
virtual bool isAvailable() const =0
virtual void print(ostream &out, const string &indent="") const =0
static const string kMinValue
Special property name for the minimum value of the DataPiece.
Definition DataPieces.h:61
size_t getOffset() const
Definition DataPieces.h:106
DataPieceType getPieceType() const
Definition DataPieces.h:83
const string & getLabel() const
Definition DataPieces.h:78
const DataLayout & getDataLayout() const
Definition DataPieces.h:73
virtual unique_ptr< DataPiece > clone() const =0
Create a new DataPiece of the same type, with the same label.
static const string kDescription
Special tag name to specify a human readable description the DataPiece.
Definition DataPieces.h:58
bool isMapped() const
Tells if the DataPiece is mapped to another DataPiece in a mapped DataLayout.
Definition DataPieces.h:184
void setUnit(const string &unit)
Definition DataPieces.h:138
static const string kUnit
Special tag name to specify a unit of the DataPiece.
Definition DataPieces.h:56
void setTag(const string &tagName, const string &tag)
Definition DataPieces.h:127
size_t getFixedSize() const
Definition DataPieces.h:116
virtual size_t getVariableSize() const =0
virtual const string & getElementTypeName() const =0
Definition Compressor.cpp:113
void writeUnaligned(void *ptr, const T &value)
Helper to make dereferencing a pointer to write an unaligned POD object safe.
Definition DataPieces.h:280
const string & getTypeName()
Get the name of the type <T>.
void unalignedCopy(void *dst, const void *src, size_t size)
ASAN can trip when pointers are not aligned, but pointing to larger types. Make asan happy.
Definition DataPieces.h:285
T readUnaligned(const void *ptr)
Helper to make dereferencing a pointer to read an unaligned POD object safe.
Definition DataPieces.h:274
DataPieceType
Specifier for a type of DataPiece.
Definition DataLayout.h:59
Definition DataLayout.cpp:1167
Template to represent some POD object without memory alignment.
Definition DataPieces.h:267