19#ifndef DATA_PIECES_STRING_MAP_H
20#define DATA_PIECES_STRING_MAP_H
23#include "DataPieces.h"
42 defaultValues_{std::move(defaultValues)} {}
45 explicit DataPieceStringMap(
const MakerBundle& bundle);
50 return vrs::getTypeName<T>();
73 void stage(
const map<string, T>& values) {
74 stagedValues_ = values;
78 void stage(map<string, T>&& values) {
79 stagedValues_ = std::move(values);
85 bool get(map<string, T>& outValues)
const;
90 return defaultValues_;
95 defaultValues_ = values;
100 defaultValues_ = std::move(values);
105 stagedValues_ = defaultValues_;
114 return patchedPiece !=
nullptr && (patchedPiece->stage(values),
true);
121 return layout_.
getVarData<int8_t>(offset_, count) !=
nullptr;
128 void print(ostream& out,
const string& indent)
const override;
133 void printCompact(ostream& out,
const string& indent)
const override;
155 unique_ptr<DataPiece>
clone()
const override {
156 auto other = std::make_unique<DataPieceStringMap<T>>(
getLabel());
157 other->tags_ = tags_;
158 other->required_ = required_;
159 other->defaultValues_ = defaultValues_;
166 return origMap->
get(stagedValues_);
170 map<string, T> stagedValues_;
171 map<string, T> defaultValues_;
The DataLayout class describes the data stored inside a DataLayoutContentBlock.
Definition DataLayout.h:191
vector< int8_t > & getVarData()
Definition DataLayout.h:242
T * getMappedPiece(size_t pieceIndex) const
Get a typed piece by index in the mapped datalayout, exclusively.
Definition DataLayout.h:505
Abstract class representing a piece of information part of a DataLayout.
Definition DataPieces.h:40
const string & getLabel() const
Definition DataPieces.h:76
DataPiece map container, with string keys and values of type T.
Definition DataPieceStringMap.h:37
void setDefault(map< string, T > &&values)
Definition DataPieceStringMap.h:99
void printCompact(ostream &out, const string &indent) const override
Definition DataLayout.cpp:1688
void initToDefault() override
Initialize to default value.
Definition DataPieceStringMap.h:104
unique_ptr< DataPiece > clone() const override
Definition DataPieceStringMap.h:155
void stage(map< string, T > &&values)
Definition DataPieceStringMap.h:78
void print(ostream &out, const string &indent) const override
Definition DataLayout.cpp:1654
bool stageCurrentValue() override
Definition DataPieceStringMap.h:148
bool patchValue(const map< string, T > &values) const
Definition DataPieceStringMap.h:112
bool isAvailable() const override
Definition DataPieceStringMap.h:119
size_t getVariableSize() const override
Definition DataLayout.cpp:1609
const string & getElementTypeName() const override
Definition DataPieceStringMap.h:49
void stage(const map< string, T > &values)
Definition DataPieceStringMap.h:73
map< string, T > & stagedValues()
Definition DataPieceStringMap.h:68
bool isSame(const DataPiece *rhs) const override
Definition DataLayout.cpp:1716
size_t collectVariableData(int8_t *data, size_t bufferSize) override
Definition DataLayout.cpp:1618
const map< string, T > & stagedValues() const
Definition DataPieceStringMap.h:63
void serialize(JsonWrapper &jsonWrapper, const JsonFormatProfileSpec &profile) override
Definition DataLayout.cpp:1725
bool get(map< string, T > &outValues) const
Definition DataLayout.cpp:1630
bool copyFrom(const DataPiece *original) override
Set or stage value from another piece known to be of the same type.
Definition DataPieceStringMap.h:164
DataPieceStringMap(string label, map< string, T > defaultValues={})
Definition DataPieceStringMap.h:40
const map< string, T > & getDefault() const
Definition DataPieceStringMap.h:89
void setDefault(const map< string, T > &values)
Definition DataPieceStringMap.h:94
Definition AsyncDiskFileChunk.hpp:49
DataPieceType
Specifier for a type of DataPiece.
Definition DataLayout.h:57
@ StringMap
Map with string keys, and T values.