19#ifndef DATA_PIECES_STRING_H
20#define DATA_PIECES_STRING_H
23#include <vrs/DataPieces.h>
26#include <vrs/VrsExport.h>
43 defaultString_{std::move(defaultValue)} {}
46 explicit DataPieceString(
const MakerBundle& bundle);
50 const string& getElementTypeName()
const override;
54 return stagedString_.size();
60 size_t collectVariableData(int8_t* data,
size_t bufferSize)
override;
65 void stage(
const string&
string) {
66 stagedString_ = string;
72 stagedString_ = std::move(
string);
92 bool get(
string& outString)
const;
98 defaultString_ = defaultString;
104 defaultString_ = std::move(defaultString);
109 return defaultString_;
114 stagedString_ = defaultString_;
122 auto* patchedPiece = layout_.getMappedPiece<
DataPieceString>(pieceIndex_);
123 return patchedPiece !=
nullptr && (patchedPiece->stage(str),
true);
127 bool isAvailable()
const override;
133 void print(ostream& out,
const string& indent)
const override;
138 void printCompact(ostream& out,
const string& indent)
const override;
143 bool isSame(
const DataPiece* rhs)
const override;
153 return get(stagedValue());
159 unique_ptr<DataPiece>
clone()
const override {
160 auto other = std::make_unique<DataPieceString>(getLabel());
161 other->tags_ = tags_;
162 other->required_ = required_;
163 other->defaultString_ = defaultString_;
170 return cloneString->
get(stagedString_);
174 string stagedString_;
175 string defaultString_;
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
DataPiece for variable length string.
Definition DataPieceString.h:38
bool copyFrom(const DataPiece *original) override
Set or stage value from another piece known to be of the same type.
Definition DataPieceString.h:168
void setDefault(const string &defaultString)
Definition DataPieceString.h:97
DataPieceString(string label, string defaultValue={})
Definition DataPieceString.h:41
string & stagedValue()
Definition DataPieceString.h:83
bool stageCurrentValue() override
Definition DataPieceString.h:152
size_t getVariableSize() const override
Definition DataPieceString.h:53
void setDefault(string &&defaultString)
Definition DataPieceString.h:103
const string & getDefault() const
Definition DataPieceString.h:108
bool patchValue(const string &str) const
Definition DataPieceString.h:121
void stage(const string &string)
Definition DataPieceString.h:65
string get() const
Definition DataLayout.cpp:1776
void stage(string &&string)
Definition DataPieceString.h:71
void initToDefault() override
Stage default value.
Definition DataPieceString.h:113
unique_ptr< DataPiece > clone() const override
Definition DataPieceString.h:159
const string & stagedValue() const
Definition DataPieceString.h:77
Definition Compressor.cpp:113
DataPieceType
Specifier for a type of DataPiece.
Definition DataLayout.h:59
@ String
Variable size array of char, null terminated.