54 void AddChild(
SEXPR* aChild );
56 SEXPR * GetChild(
size_t aIndex )
const;
57 size_t GetNumberOfChildren()
const;
58 int64_t GetLongInteger()
const;
59 int32_t GetInteger()
const;
60 float GetFloat()
const;
61 double GetDouble()
const;
62 std::string
const & GetString()
const;
63 std::string
const & GetSymbol()
const;
65 std::string
AsString(
size_t aLevel = 0)
const;
159 type(
Type::INT ) {
u.int_value = aValue; }
162 type(
Type::LONGINT ) {
u.lint_value = aValue; }
165 type(
Type::DOUBLE ) {
u.dbl_value = aValue; }
204 type(
Type::INT ) {
u.int_value = aValue; }
207 type(
Type::LONGINT ) {
u.lint_value = aValue; }
210 type(
Type::DOUBLE ) {
u.dbl_value = aValue; }
222 type(
Type::SEXPR_ATOM ) {
u.sexpr_ptr = aPointer; }
250 template <
typename... Args>
259 template <
typename... Args>
260 size_t Scan(
const Args&... args )
263 return doScan( arg_array,
sizeof...( Args ) );
266 template <
typename... Args>
SEXPR_CHILDREN_ARG(const std::string &aValue)
SEXPR_CHILDREN_ARG(double aValue)
SEXPR_CHILDREN_ARG(SEXPR *aPointer)
SEXPR_CHILDREN_ARG(const char *aValue)
SEXPR_CHILDREN_ARG(int64_t aValue)
SEXPR_CHILDREN_ARG(const _OUT_STRING &aValue)
union SEXPR::SEXPR_CHILDREN_ARG::@40 u
SEXPR_CHILDREN_ARG(int32_t aValue)
void doAddChildren(const SEXPR_CHILDREN_ARG *args, size_t num_args)
size_t Scan(const Args &... args)
SEXPR_LIST(int aLineNumber)
SEXPR_LIST(const Args &... args)
size_t doScan(const SEXPR_SCAN_ARG *args, size_t num_args)
void AddChildren(const Args &... args)
friend SEXPR_LIST & operator>>(SEXPR_LIST &input, ISEXPRABLE &obj)
friend SEXPR_LIST & operator<<(SEXPR_LIST &list, double value)
SEXPR_SCAN_ARG(const std::string *aValue)
union SEXPR::SEXPR_SCAN_ARG::@39 u
SEXPR_SCAN_ARG(std::string aValue)
SEXPR_SCAN_ARG(int32_t *aValue)
SEXPR_SCAN_ARG(int64_t *aValue)
SEXPR_SCAN_ARG(std::string *aValue)
SEXPR_SCAN_ARG(_IN_STRING &aValue)
SEXPR_SCAN_ARG(double *aValue)
SEXPR_SCAN_ARG(const char *aValue)
size_t GetLineNumber() const
_OUT_STRING AsString(const std::string &aString)
_OUT_STRING AsSymbol(const std::string &aString)
std::vector< class SEXPR * > SEXPR_VECTOR
@ SEXPR_TYPE_ATOM_INTEGER
SEXPR_DOUBLE(double aValue)
SEXPR_DOUBLE(double aValue, int aLineNumber)
SEXPR_INTEGER(int64_t aValue, int aLineNumber)
SEXPR_INTEGER(int64_t aValue)
SEXPR_STRING(const std::string &aValue, int aLineNumber)
SEXPR_STRING(const std::string &aValue)
SEXPR_SYMBOL(const std::string &aValue, int aLineNumber)
SEXPR_SYMBOL(const std::string &aValue)
const std::string & _String