Loading...
Searching...
No Matches
by::stela Class Reference

Core AST node for stela configuration language. More...

#include <stela.hpp>

Inheritance diagram for by::stela:
by::instance by::typeProvidable by::clonable by::nulStela by::valStela by::verStela

Public Member Functions

 stela (std::initializer_list< me * > subs, const std::string &name="")
 Constructs a stela object with an optional name and an initializer list of child stela objects.
 
 stela (const me &rhs, const std::string &name="")
 
 stela (const std::string &name="")
 
meoperator[] (const std::string &name)
 
const meoperator[] (const std::string &name) const BY_CONST_FUNC(operator[](name))
 
meoperator[] (const nchar *name)
 
const meoperator[] (const nchar *name) const BY_CONST_FUNC(operator[](name))
 
 operator nbool () const
 Converts the stela object to a boolean, indicating its existence.
 
mesub (const std::string &name)
 
mesub (const std::string *it) BY_SIDE_FUNC(it
 
const me &sub(nidx n) const BY_CONST_FUNC(sub(n)) nbool has(const std nbool has (const std::string *it) const BY_SIDE_FUNC(has)
 
void add (const stela &it)
 Adds a stela object as a child.
 
void add (const stela *it) BY_SIDE_FUNC(add)
 Adds a stela object as a child.
 
void add (std::initializer_list< stela * > subs)
 Adds multiple stela objects from an initializer list as children.
 
void del (const stela &it)
 
void del (const stela *it) BY_SIDE_FUNC(del)
 
void del (const std::string &name)
 
void del (const std::string *it) BY_SIDE_FUNC(del)
 
void del (const nchar *name)
 
const std::string & getName () const
 
void setName (const std::string &newName)
 
void setName (const std::string *it) BY_SIDE_FUNC(setName)
 
void setName (const nchar *newName)
 
ncnt len () const
 
iterator begin ()
 
iterator end ()
 
const typegetType () const override
 
virtual nint asInt () const
 Converts the stela object's value to an integer.
 
virtual nchar asChar () const
 Converts the stela object's value to a character.
 
virtual const std::string & asStr () const
 Converts the stela object's value to a string.
 
virtual nbool asBool () const
 Converts the stela object's value to a boolean.
 
virtual nbool isExist () const
 Checks if the stela object is considered "existent" (i.e., not a nulStela).
 
- Public Member Functions inherited from by::instance
 instance (id newId)
 
 instance (const me &rhs)
 
meoperator= (const me &rhs)=default
 
voidoperator new (size_t sz) noexcept
 
void operator delete (void *pt, size_t sz) noexcept
 
virtual id getId () const
 
virtual nbool isHeap () const
 Checks if this instance is allocated on the heap.
 
const lifegetBindTag () const
 Returns a pointer to the associated life object for reference counting.
 
- Public Member Functions inherited from by::typeProvidable
nbool operator== (const me &rhs) const
 
nbool operator!= (const me &rhs) const
 
nbool isSub (const type &it) const
 
nbool isSub (const type *it) const BY_SIDE_FUNC(isSub)
 
nbool isSub (const me &it) const
 
nbool isSub (const me *it) const BY_SIDE_FUNC(isSub)
 
nbool isSuper (const type &it) const
 
nbool isSuper (const type *it) const BY_SIDE_FUNC(isSuper)
 
nbool isSuper (const me &it) const
 
nbool isSuper (const me *it) const BY_SIDE_FUNC(isSuper)
 
template<typename T >
nint isSub () const
 
template<typename T >
nint isSuper () const
 
template<typename T >
Tcast ()
 
template<typename T >
const Tcast () const BY_CONST_FUNC(cast< T >()) virtual void *cast(const type &to)
 Safe cast to target type using type hierarchy information.
 
const voidcast (const type &to) const BY_CONST_FUNC(cast(to)) void *cast(const type *it) BY_SIDE_FUNC(cast)
 
- Public Member Functions inherited from by::clonable
virtual meclone () const =0
 
virtual mecloneDeep () const
 
virtual void onCloneDeep (const me &from)
 

Public Attributes

me sub it
 
me sub * this
 
const me &sub(const std::string &name) const BY_CONST_FUNC(sub(name)) const me &sub(const std const me sub )(const nchar *name) const BY_CONST_FUNC(sub(name)) me &sub(nidx n)
 

Additional Inherited Members

- Static Public Member Functions inherited from by::instance
static vaultgetVault ()
 
- Protected Member Functions inherited from by::instance
nbool _setId (id new1)
 
- Static Protected Member Functions inherited from by::instance
static instancer_getMgr ()
 

Detailed Description

Core AST node for stela configuration language.

The fundamental unit class of the stela module, providing the following features:

  1. Provides type conversion APIs like asInt(), asChar() to int, char, string, bool
  2. When value exists, valStela APIs execute, converting to appropriate types. For example, verStela(22).asStr() returns std::string("22")
  3. When no value exists, represented as nulStela. Any type conversion attempt returns default value (empty string or 0)
  4. Provides version type with major, minor, patch versions, supporting range expressions
  5. stela can have other stela objects as children. Each stela has a name, so children are searched by name or traversed. If no child matches the name, nulStela is returned

Similar to node in the core module.

Usage

Example demonstrates typical usage:

const std::string script = R"SRC(
def man
dummy := 5
name := "dark souls"
ver := 1.0.8
)SRC";
stela& man = root->sub("man");
stela& name = man["name"];
ASSERT_STREQ(name.asStr().c_str(), "dark souls");
verStela& ver = man["ver"].cast<verStela>() OR_ASSERT(ver);
ASSERT_STREQ(ver.asStr().c_str(), "1.0.8");
ASSERT_EQ(ver.asMajor(), 1);
ASSERT_EQ(ver.asMinor(), 0);
ASSERT_EQ(ver.asFix(), 8);
Core AST node for stela configuration language.
Definition stela.hpp:49
Parser for stela configuration language.
Definition stelaParser.hpp:39
tstr< stela > parse(const std::string &codes)
Parses the given string of stela code.
Version stela node for semantic version handling.
Definition verStela.hpp:17
Rich logging support with polymorphic type conversion.
Definition richLog.hpp:34

Constructor & Destructor Documentation

◆ stela()

by::stela::stela ( std::initializer_list< me * > subs,
const std::string & name = "" )

Constructs a stela object with an optional name and an initializer list of child stela objects.

Parameters
subsAn initializer list of stela pointers to be added as children.
nameThe name of this stela object.

Member Function Documentation

◆ add() [1/3]

void by::stela::add ( const stela & it)

Adds a stela object as a child.

Parameters
itThe stela object to add as a child.

◆ add() [2/3]

void by::stela::add ( const stela * it)

Adds a stela object as a child.

Parameters
itPointer to the stela object to add as a child.

◆ add() [3/3]

void by::stela::add ( std::initializer_list< stela * > subs)

Adds multiple stela objects from an initializer list as children.

Parameters
subsAn initializer list of stela pointers to add as children.

◆ asBool()

virtual nbool by::stela::asBool ( ) const
virtual

Converts the stela object's value to a boolean.

If the stela object has no value or is a nulStela, it returns false. If the conversion from its internal type (e.g., string) fails, an exception may be thrown.

Returns
The boolean representation of the stela object's value.

Reimplemented in by::nulStela, and by::valStela.

◆ asChar()

virtual nchar by::stela::asChar ( ) const
virtual

Converts the stela object's value to a character.

If the stela object has no value or is a nulStela, it returns a null character ('\0'). If the conversion from its internal type (e.g., string) fails, an exception may be thrown.

Returns
The character representation of the stela object's value.

Reimplemented in by::nulStela, and by::valStela.

◆ asInt()

virtual nint by::stela::asInt ( ) const
virtual

Converts the stela object's value to an integer.

If the stela object has no value or is a nulStela, it returns 0. If the conversion from its internal type (e.g., string) fails, an exception may be thrown.

Returns
The integer representation of the stela object's value.

Reimplemented in by::nulStela, and by::valStela.

◆ asStr()

virtual const std::string & by::stela::asStr ( ) const
virtual

Converts the stela object's value to a string.

If the stela object has no value or is a nulStela, it returns an empty string.

Returns
A const reference to the string representation of the stela object's value.

Reimplemented in by::nulStela, and by::valStela.

◆ getType()

const type & by::stela::getType ( ) const
overridevirtual

Implements by::typeProvidable.

◆ isExist()

virtual nbool by::stela::isExist ( ) const
virtual

Checks if the stela object is considered "existent" (i.e., not a nulStela).

Returns
true if the stela object holds a value, false if it represents a null or non-existent entry.

Reimplemented in by::nulStela.

◆ operator nbool()

by::stela::operator nbool ( ) const
explicit

Converts the stela object to a boolean, indicating its existence.

Returns
true if the stela object is valid and exists (i.e., not a nulStela), false otherwise.

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