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

The compilation unit — the one node with no source form of its own. More...

#include <rootStela.hpp>

Inheritance diagram for by::rootStela:
by::defStela by::stela by::instance by::typeProvidable by::clonable

Additional Inherited Members

- Public Member Functions inherited from 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.
 
 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 & getPrefix () const
 The comment lines sitting above this node, # markers included.
 
void setPrefix (const std::string &newPrefix)
 
void setPrefix (const nchar *newPrefix)
 
const std::string & getPostfix () const
 The comment after this node on the same line, # marker included.
 
void setPostfix (const std::string &newPostfix)
 
void setPostfix (const nchar *newPostfix)
 
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 ()
 
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).
 
virtual void accept (const stelaVisitInfo &i, stelaVisitor &v)
 Dispatch entry for stelaVisitor. Base implementation calls v.visit(i, *this); subclasses override via the VISIT macro.
 
- 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
 
virtual const typegetType () const =0
 
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)
 
- Static Public Member Functions inherited from by::instance
static vaultgetVault ()
 
- Public Attributes inherited from by::stela
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)
 
- Protected Member Functions inherited from by::instance
nbool _setId (id new1)
 
- Static Protected Member Functions inherited from by::instance
static instancer_getMgr ()
 

Detailed Description

The compilation unit — the one node with no source form of its own.

stela source has an implicit top level: statements at column 0 belong to the file, not to any def block. rootStela is that top level. It is a defStela in every respect but one: it is never written back out, because no def line produced it.

It exists so that "is this the root?" is a type, not a test. Anything taking a plain Stela used to answer that question by inspecting the traversal depth, which spread one document-shape rule across every such function and left the answer wrong for any subtree visited on its own.

stelaParser produces exactly one per parse.


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