19#ifndef DATA_PIECES_STRING_H
20#define DATA_PIECES_STRING_H
23#include "DataPieces.h"
41 defaultString_{std::move(defaultValue)} {}
44 explicit DataPieceString(
const MakerBundle& bundle);
52 return stagedString_.size();
63 void stage(
const string&
string) {
64 stagedString_ = string;
70 stagedString_ = std::move(
string);
90 bool get(
string& outString)
const;
94 return !defaultString_.empty();
98 return defaultString_;
102 defaultString_ = defaultString;
106 defaultString_ = std::move(defaultString);
111 stagedString_ = defaultString_;
120 return patchedPiece !=
nullptr && (patchedPiece->stage(str),
true);
130 void print(ostream& out,
const string& indent)
const override;
135 void printCompact(ostream& out,
const string& indent)
const override;
156 unique_ptr<DataPiece>
clone()
const override {
157 auto other = std::make_unique<DataPieceString>(
getLabel());
158 other->tags_ = tags_;
159 other->required_ = required_;
160 other->defaultString_ = defaultString_;
167 return cloneString->
get(stagedString_);
171 string stagedString_;
172 string defaultString_;
The DataLayout class describes the data stored inside a DataLayoutContentBlock.
Definition DataLayout.h:191
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 for variable length string.
Definition DataPieceString.h:36
size_t collectVariableData(int8_t *data, size_t bufferSize) override
Definition DataLayout.cpp:1756
bool copyFrom(const DataPiece *original) override
Set or stage value from another piece known to be of the same type.
Definition DataPieceString.h:165
void setDefault(const string &defaultString)
Set the default string, in case the DataLayout is mapped, but this DataPiece was not mapped.
Definition DataPieceString.h:101
DataPieceString(string label, string defaultValue={})
Definition DataPieceString.h:39
string & stagedValue()
Definition DataPieceString.h:81
bool stageCurrentValue() override
Definition DataPieceString.h:149
size_t getVariableSize() const override
Definition DataPieceString.h:51
void print(ostream &out, const string &indent) const override
Definition DataLayout.cpp:1787
void setDefault(string &&defaultString)
Set the default string, in case the DataLayout is mapped, but this DataPiece was not mapped.
Definition DataPieceString.h:105
const string & getDefault() const
Get the default string, if one was was set.
Definition DataPieceString.h:97
bool patchValue(const string &str) const
Definition DataPieceString.h:118
bool isAvailable() const override
Tell if a value is available, in this DataLayout or the mapped DataLayout.
Definition DataLayout.cpp:1782
void stage(const string &string)
Definition DataPieceString.h:63
string get() const
Definition DataLayout.cpp:1764
void stage(string &&string)
Definition DataPieceString.h:69
void initToDefault() override
Initialize to default value.
Definition DataPieceString.h:110
const string & getElementTypeName() const override
Definition DataLayout.cpp:1751
void printCompact(ostream &out, const string &indent) const override
Definition DataLayout.cpp:1804
unique_ptr< DataPiece > clone() const override
Definition DataPieceString.h:156
void serialize(JsonWrapper &jsonWrapper, const JsonFormatProfileSpec &profile) override
Definition DataLayout.cpp:1817
const string & stagedValue() const
Definition DataPieceString.h:75
bool isSame(const DataPiece *rhs) const override
Definition DataLayout.cpp:1809
bool hasDefault() const
Tell if a the DataPiece has a default value.
Definition DataPieceString.h:93
Definition AsyncDiskFileChunk.hpp:49
DataPieceType
Specifier for a type of DataPiece.
Definition DataLayout.h:57
@ String
Variable size array of char, null terminated.