KSeExpr 4.0.4.0
KSeExpr::VarBlock Class Reference

A thread local evaluation context. Just allocate and fill in with data. More...

#include <VarBlock.h>

Public Member Functions

 VarBlock (VarBlock &&other) noexcept
 Move semantics is the only allowed way to change the structure.
 ~VarBlock ()=default
 VarBlock (const VarBlock &)=delete
 Don't allow copying and operator='ing'.
VarBlockoperator= (const VarBlock &)=delete
VarBlockoperator= (VarBlock &&other)=delete
double *& Pointer (uint32_t variableOffset)
 Get a reference to the data block pointer which can be modified.
char **& CharPointer (uint32_t variableOffset)
char ** data ()
 Raw data of the data block pointer (used by compiler)

Public Attributes

int indirectIndex
 indirect index to add to pointer based data
bool threadSafe
 if true, interpreter's data will be copied to this instance before evaluation.
std::vector< double > d
 copy of Interpreter's double data
std::vector< char * > s
 copy of Interpreter's str data

Private Member Functions

 VarBlock (int size, bool makeThreadSafe)
 Allocate an VarBlock.

Private Attributes

std::vector< char * > _dataPtrs
 This stores double* or char** ptrs to variables.

Friends

class VarBlockCreator

Detailed Description

A thread local evaluation context. Just allocate and fill in with data.

Definition at line 21 of file VarBlock.h.

Constructor & Destructor Documentation

◆ VarBlock() [1/3]

KSeExpr::VarBlock::VarBlock ( int size,
bool makeThreadSafe )
inlineprivate

Allocate an VarBlock.

Definition at line 25 of file VarBlock.h.

References _dataPtrs, indirectIndex, and threadSafe.

Referenced by operator=(), operator=(), VarBlock(), and VarBlock().

◆ VarBlock() [2/3]

KSeExpr::VarBlock::VarBlock ( VarBlock && other)
inlinenoexcept

Move semantics is the only allowed way to change the structure.

Definition at line 36 of file VarBlock.h.

References _dataPtrs, d, indirectIndex, s, threadSafe, and VarBlock().

◆ ~VarBlock()

KSeExpr::VarBlock::~VarBlock ( )
default

◆ VarBlock() [3/3]

KSeExpr::VarBlock::VarBlock ( const VarBlock & )
delete

Don't allow copying and operator='ing'.

References VarBlock().

Member Function Documentation

◆ CharPointer()

char **& KSeExpr::VarBlock::CharPointer ( uint32_t variableOffset)
inline

Definition at line 57 of file VarBlock.h.

References _dataPtrs.

◆ data()

char ** KSeExpr::VarBlock::data ( )
inline

Raw data of the data block pointer (used by compiler)

Definition at line 76 of file VarBlock.h.

References _dataPtrs.

Referenced by KSeExpr::Interpreter::eval(), and KSeExpr::Expression::evalMultiple().

◆ operator=() [1/2]

VarBlock & KSeExpr::VarBlock::operator= ( const VarBlock & )
delete

References VarBlock().

◆ operator=() [2/2]

VarBlock & KSeExpr::VarBlock::operator= ( VarBlock && other)
delete

References VarBlock().

◆ Pointer()

double *& KSeExpr::VarBlock::Pointer ( uint32_t variableOffset)
inline

Get a reference to the data block pointer which can be modified.

Definition at line 53 of file VarBlock.h.

References _dataPtrs.

◆ VarBlockCreator

friend class VarBlockCreator
friend

Definition at line 33 of file VarBlock.h.

References VarBlockCreator.

Referenced by VarBlockCreator.

Member Data Documentation

◆ _dataPtrs

std::vector<char *> KSeExpr::VarBlock::_dataPtrs
private

This stores double* or char** ptrs to variables.

Definition at line 83 of file VarBlock.h.

Referenced by CharPointer(), data(), Pointer(), VarBlock(), and VarBlock().

◆ d

std::vector<double> KSeExpr::VarBlock::d

copy of Interpreter's double data

Definition at line 70 of file VarBlock.h.

Referenced by KSeExpr::Interpreter::eval(), KSeExpr::Expression::evalFP(), and VarBlock().

◆ indirectIndex

int KSeExpr::VarBlock::indirectIndex

indirect index to add to pointer based data

Definition at line 64 of file VarBlock.h.

Referenced by KSeExpr::Interpreter::eval(), KSeExpr::Expression::evalMultiple(), VarBlock(), and VarBlock().

◆ s

std::vector<char *> KSeExpr::VarBlock::s

copy of Interpreter's str data

Definition at line 73 of file VarBlock.h.

Referenced by KSeExpr::Interpreter::eval(), KSeExpr::Expression::evalStr(), and VarBlock().

◆ threadSafe

bool KSeExpr::VarBlock::threadSafe

if true, interpreter's data will be copied to this instance before evaluation.

Definition at line 67 of file VarBlock.h.

Referenced by KSeExpr::Interpreter::eval(), KSeExpr::Expression::evalFP(), KSeExpr::Expression::evalStr(), VarBlock(), and VarBlock().


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