VRS
A file format for sensor data.
Loading...
Searching...
No Matches
List of all members
vrs::AutoDataLayout Class Reference

Specialized DataLayout class to declare a DataLayout in struct format. More...

#include <DataLayout.h>

Inheritance diagram for vrs::AutoDataLayout:
vrs::DataLayout vrs::TagsRecord vrs::datalayout_conventions::AudioSpec vrs::datalayout_conventions::ImageSpec vrs::datalayout_conventions::NextContentBlockSpec vrs::datalayout_conventions::VideoFrameSpec vrs_sample_apps::CameraStreamConfig vrs_sample_apps::CameraStreamData vrs_sample_apps::MotionStreamConfig vrs_sample_apps::MotionStreamData vrs_sample_code::MyCameraDataLayoutConfiguration vrs_sample_code::MyCameraDataLayoutData vrs_sample_code::MyCameraDataLayoutLegacyData vrs_sample_code::MyMetadata

Additional Inherited Members

- Public Member Functions inherited from vrs::DataLayout
DataLayoutoperator= (const DataLayout &)=delete
 
 DataLayout (const DataLayout &)=delete
 
virtual ~DataLayout ()
 
ContentBlock getContentBlock () const
 
vector< int8_t > & getFixedData ()
 
vector< int8_t > & getVarData ()
 
size_t getFixedDataSizeNeeded () const
 
size_t getVarDataSizeFromIndex () const
 
size_t getVarDataSizeNeeded () const
 
void collectVariableDataAndUpdateIndex ()
 
void collectVariableDataAndUpdateIndex (void *destination)
 
void getRawData (vector< int8_t > &outRawData) const
 
void stageCurrentValues ()
 
bool copyClonedDataPieceValues (const DataLayout &originalLayout)
 
bool mapLayout (DataLayout &targetLayout)
 
bool isMapped () const
 
bool hasAllRequiredPieces () const
 
void requireAllPieces ()
 Mark all the fields of the layout as required.
 
void printLayout (ostream &out, const string &indent="") const
 
void printLayoutCompact (ostream &out, const string &indent="") const
 
string asJson (JsonFormatProfile profile) const
 
string asJson (const JsonFormatProfileSpec &profile=JsonFormatProfileSpec()) const
 
string getListOfPiecesSpec () const
 Get a text list of fields, types & names, one per line. Useful for tests.
 
bool isSame (const DataLayout &otherLayout) const
 
template<class T >
const DataPieceValue< T > * findDataPieceValue (const string &label) const
 
template<class T >
DataPieceValue< T > * findDataPieceValue (const string &label)
 
template<class T >
const DataPieceArray< T > * findDataPieceArray (const string &label, size_t arraySize) const
 
template<class T >
DataPieceArray< T > * findDataPieceArray (const string &label, size_t arraySize)
 
template<class T >
const DataPieceVector< T > * findDataPieceVector (const string &label) const
 
template<class T >
DataPieceVector< T > * findDataPieceVector (const string &label)
 
template<class T >
const DataPieceStringMap< T > * findDataPieceStringMap (const string &label) const
 
template<class T >
DataPieceStringMap< T > * findDataPieceStringMap (const string &label)
 
const DataPieceStringfindDataPieceString (const string &label) const
 
DataPieceStringfindDataPieceString (const string &label)
 
void forEachDataPiece (const std::function< void(const DataPiece *)> &, DataPieceType type=DataPieceType::Undefined) const
 
void forEachDataPiece (const std::function< void(DataPiece *)> &, DataPieceType type=DataPieceType::Undefined)
 Same as above, but as a non-const version.
 
bool isVarDataIndexValid () const
 
size_t getDeclaredFixedDataPiecesCount () const
 
size_t getDeclaredVarDataPiecesCount () const
 
size_t getAvailableFixedDataPiecesCount () const
 
size_t getAvailableVarDataPiecesCount () const
 
- Static Public Member Functions inherited from vrs::DataLayout
static unique_ptr< DataLayoutmakeFromJson (const string &json)
 
- Static Public Attributes inherited from vrs::DataLayout
static const size_t kNotFound = numeric_limits<size_t>::max()
 Special OffsetAndLength offset value marking that a piece of data isn't available.
 
static const size_t kVariableSize = numeric_limits<size_t>::max() - 1
 Special value used for a DataPiece size, telling that that DataPiece has a variable size.
 
- Protected Member Functions inherited from vrs::DataLayout
template<class T >
T * getFixedData (size_t offset, size_t size)
 
const IndexEntrygetVarSizeIndex () const
 
IndexEntrygetVarSizeIndex ()
 
template<class T >
T * getVarData (size_t varPieceIndex, size_t &outCount)
 
void initLayout ()
 
void serialize (JsonWrapper &rj, const JsonFormatProfileSpec &profile) const
 
- Static Protected Member Functions inherited from vrs::DataLayout
static bool mapPieces (const vector< DataPiece * > &searchPieces, const vector< DataPiece * > &givenPieces)
 
- Protected Attributes inherited from vrs::DataLayout
vector< DataPiece * > fixedSizePieces_
 Ordered fixed-size DataPieces.
 
vector< DataPiece * > varSizePieces_
 Ordered variable-size DataPieces.
 
vector< int8_t > fixedData_
 Buffer to hold fixed-size pieces, and the index of var size pieces (if any).
 
size_t fixedDataSizeNeeded_ {}
 Byte count for all the fixed size pieces + var size index.
 
vector< int8_t > varData_
 Buffer holding variable-size pieces, after they've been collected, or read from disk.
 
bool hasAllRequiredPieces_ {true}
 Tells all the required pieces have been mapped successfully.
 
DataLayoutmappedDataLayout_ {}
 DataLayout this layout has been mapped to, if any.
 

Detailed Description

Specialized DataLayout class to declare a DataLayout in struct format.

To create an automatically generated DataLayout class, inherit from AutoDataLayout, then declare the specialized DataPiece objects as members, and finalize the DataLayout by using an AutoDataLayoutEnd object as the last class member. All the DataPiece objects will be automatically registered in the DataLayout, allowing the DataLayout to references all its DataPiece objects.

Example:

class MyConfig : public AutoDataLayout { DataPieceValue<uint32_t> exposureMode{"exposure_mode"}; DataPieceValue<int8_t> serial{"serial_number", 12}; // array of 12 int8_t values DataPieceString description{"description"}; AutoDataLayoutEnd end; };

Be very careful to always match each AutoDataLayout with an AutoDataLayoutEnd member!


The documentation for this class was generated from the following files: