60 explicit SO(
bool p_exec =
false ) :
exec_(p_exec) {}
65 virtual ~SO() =
default;
89 [[nodiscard]]
virtual SO *
dup()
const = 0;
93 [[nodiscard]]
virtual SO *
clone()
const {
119 virtual std::string
type()
const = 0;
139 virtual bool gt(
const SO * )
const {
148 virtual bool ge(
const SO * )
const {
170 return "--nostringval--";
Counter base class.
Definition: counter.h:26
Design by contract interface class.
Definition: dbc.h:25
Semantic Object.
Definition: so.h:54
virtual bool equal(const SO *) const =0
Equality.
void setExec(bool p_exec)
Setter for exec_.
Definition: so.h:76
virtual std::string type() const =0
Returns a type name.
virtual SO * dup() const =0
Creates a new instance as copy following the red book definition.
SO(bool p_exec=false)
Ctor.
Definition: so.h:60
virtual ~SO()=default
Virtual dtor.
virtual std::string opequalequal() const
For operators '==' and 'pstack'.
Definition: so.h:104
virtual std::string opequal() const =0
For operators '=', 'cvs' and 'stack'.
virtual bool ge(const SO *) const
Greater or equal.
Definition: so.h:148
virtual OTCode ot() const =0
Returns an OTCode.
virtual bool gt(const SO *) const
Greater than.
Definition: so.h:139
bool getExec() const
Getter for exec_.
Definition: so.h:70
virtual SO * clone() const
Creates a new instance as copy with deep cloning.
Definition: so.h:93
bool exec_
All SOs have executive vs literal attribut.
Definition: so.h:55
virtual size_t getSize() const
Getter for the number of characters or number of objects.
Definition: so.h:82
Composite Semantic Object.
Definition: so.h:161
std::string opequal() const override
For operators '=', 'cvs' and 'stack'.
Definition: so.h:169
virtual size_t treeheight(size_t p_myheigth) const
Tree Height.
Definition: so.h:185
Helpers for design by contract idioms.
void opErrExit(OpError p_err, const std::string &p_details, const std::source_location p_location)
Operator error message to interpreter cout_ and exit( EC_OPERATOR ).
Definition: error.cpp:28
@ typecheck
PS operator error typecheck.
Definition: error.h:33
Miscellaneous definitions and functions.
OTCode
OTCode - the Object Type Code.
Definition: so.h:29