34#ifndef DRAIN_VARIABLE_BASE
35#define DRAIN_VARIABLE_BASE
38#include "CastableIterator.h"
76 if (caster.
ptr ==
nullptr){
79 else if (data.empty()){
83 return (caster.
ptr != (
void *) &data[0]);
133 template <
class T,
class ...TT>
135 void set(
const T &arg,
const TT& ...args){
160 void setType(
const std::type_info & t)
override ;
234 std::vector<char> data;
236 mutable CastableIterator dataBegin;
237 mutable CastableIterator dataEnd;
242 void updateIterators();
282 this->assignCastable(value);
290 if (value.isLinking() && this->isLinkable()){
294 this->assignCastable(value);
307 void init(
const std::type_info &t =
typeid(
void)) {
315 void init(
const T & value) {
326 void init(
const T & value,
const std::type_info &t) {
327 std::cerr << __FILE__ <<
':' << __LINE__ <<
':' << __FUNCTION__ <<
" " << value <<
'[' << t.name() <<
']' << std::endl;
329 std::cerr << __LINE__ <<
" reset: " << std::endl;
331 std::cerr << __LINE__ <<
" setType: " << std::endl;
333 std::cerr << __LINE__ <<
" assign: " << std::endl;
335 std::cerr << __LINE__ <<
" ...done " << std::endl;
343 std::cerr << __FILE__ <<
':' << __LINE__ << __FUNCTION__ <<
" " << v << std::endl;
347 this->assignCastable(v);
353 std::cerr << __FILE__ <<
':' << __LINE__ << __FUNCTION__ <<
" " << c << std::endl;
357 this->assignCastable(c);
365 this->assignString(s);
371 void init(std::initializer_list<T> l,
const std::type_info &t =
typeid(
void)) {
375 this->assignContainer(l,
true);
378 template <
class ...TT>
379 void init(
const TT& ...args){
382 this->append(args...);
Definition CastableIterator.h:57
size_t elementCount
Pointer to the data variable.
Definition Castable.h:1255
char outputSeparator
Element separator usein in writing and reading character strings (streams).
Definition Castable.h:1261
char inputSeparator
Element separator usein in reading a char sequence to an (numeric) array.
Definition Castable.h:1258
void clear()
Clears strings, or for scalars and arrays, sets all the values to zero. Does not change type.
Definition Castable.cpp:81
void append(const T &x)
Appends the string or appends the array by one element.
Definition Castable.h:410
void * ptr
Future member: enables setting Caster type.
Definition Caster.h:247
Base class for variables: Variable, Reference and FlexibleVariable.
Definition VariableBase.h:56
virtual bool isLinking() const
Tells if the pointer points to an external variable.
Definition VariableBase.h:75
virtual bool setSize(size_t elementCount)
Extends the array to include elementCount elements of current type.
Definition VariableBase.h:203
virtual bool isVariable() const
Tells if internal memory exists.
Definition VariableBase.h:105
const CastableIterator & begin() const
Like with std::iterator.
Definition VariableBase.h:188
virtual bool isLinkable() const
Tells if the internal pointer can point to an external variable.
Definition VariableBase.h:115
const CastableIterator & end() const
Like with std::iterator.
Definition VariableBase.h:195
VariableBase & operator<<(const T &x)
Extends the array by one element.
Definition VariableBase.h:175
void setType()
Overriding (shadowing) Castable::setType()
Definition VariableBase.h:165
Definition VariableBase.h:255
void init(const Castable &c)
Copies type, data and separator char.
Definition VariableBase.h:352
void init(const char *s)
Copies type, data and separator char.
Definition VariableBase.h:362
void init(std::initializer_list< T > l, const std::type_info &t=typeid(void))
Initialisation with type of the first element or explicit type argument.
Definition VariableBase.h:371
void init(const std::type_info &t=typeid(void))
Default constructor generates an empty array.
Definition VariableBase.h:307
void init(const VariableBase &v)
Copies type, data and separator char.
Definition VariableBase.h:342
void init(const VariableT< T > &value)
Copy constructor handler.
Definition VariableBase.h:278
VariableT is a final class applied through typedefs Variable, Reference and FlexibleVariable.
Definition VariableT.h:87
Definition DataSelector.cpp:1277