Base class for error hierarchy. More...
#include <baseErr.hpp>
Public Member Functions | |
| baseErr (errLv::level t) | |
| baseErr (const baseErr &rhs) | |
| me & | operator= (const me &rhs) |
| virtual nbool | operator== (const me &rhs) const =0 |
| nbool | operator!= (const me &rhs) const |
| const frames & | getFrames () const |
| void | logStack () const override |
| void | dump () const override |
| errLv::level | getLv () const override |
| const std::string & | getMsg () const override |
| virtual errCode | getErrCode () const |
Public Member Functions inherited from by::baseObj | |
| str | eval (const args &a) override |
| scope & | subs () override |
| state | getState () const override |
| void | setState (state new1) override |
| priorType | prioritize (const args &a) const override |
| virtual const baseObj & | getOrigin () const |
| void | inFrame (const bicontainable *args) const override |
| void | outFrame () const override |
| const src & | getSrc () const override |
| virtual const node & | getSubPod () const |
| Retrieves a sub-pod represented as a node. | |
| virtual baseObj * | make () const |
| const modifier & | getModifier () const override |
Public Member Functions inherited from by::node | |
| me & | operator[] (const std::string &name) |
| const me & | operator[] (const std::string &name) const BY_CONST_FUNC(operator[](name)) |
| me & | operator[] (const std::string *it) |
| const me & | operator[] (const std::string *it) const BY_CONST_FUNC(operator[](it)) |
| me & | operator[] (const nchar *name) |
| const me & | operator[] (const nchar *name) const BY_CONST_FUNC(operator[](name)) |
| nbool | in (const node &elem) const |
| nbool | in (const node *elem) const |
| const scope & | subs () const BY_CONST_FUNC(subs()) virtual tstr< nbicontainer > mySubs() const |
| Returns a tstr to a container of immediate sub-nodes (excluding inherited or chained ones). | |
| const node * | promote (const node &it) const |
| const node * | promote (const node *it) const BY_SIDE_FUNC(promote) |
| template<typename T > | |
| T * | sub (std::function< nbool(const std::string &, const T &)> l) |
| template<typename T > | |
| const T * | sub (std::function< nbool(const std::string &, const T &)> l) const BY_CONST_FUNC(sub< T >(l)) template< typename T |
| template<typename T = me> | |
| const T * | sub () const BY_CONST_FUNC(sub< T >()) template< typename T |
| template<typename T = me> | |
| T * | sub (const std::string *it) BY_SIDE_FUNC(sub) |
| template<typename T = me> | |
| const T * | sub (const std::string &name) const BY_CONST_FUNC(sub< T >(name)) template< typename T |
| template<typename T = me> | |
| T * | sub (const std::string *name, const args &a) BY_SIDE_FUNC(name |
| template<typename T = me> | |
| const T * | sub (const std::string &name, const args &a) const BY_CONST_FUNC(sub< T >(name |
| template<typename T = me> | |
| const T a const T * | sub (const std::string *name, const args &a) const BY_CONST_FUNC(sub< T >(name |
| template<typename T > | |
| const T a const T a tnarr< T, strTactic > | subAll (std::function< nbool(const std::string &, const T &)> l) const |
| template<typename T = me> | |
| tnarr< T, strTactic > | subAll () const |
| template<typename T = me> | |
| tpriorities< T > | subAll (const std::string &name) const |
| template<typename T = me> | |
| tpriorities< T > | subAll (const std::string *it) const BY_SIDE_FUNC(subAll< T >) template< typename T |
| template<typename T = me> | |
| tpriorities< T > | subAll (const std::string &name, const args &a) const |
| template<typename T = me> | |
| tpriorities< T > | subAll (const std::string *name, const args *a) const BY_SIDE_FUNC(name |
| tpriorities< T > subAll< T > | tpriorities ()) |
| template<typename T = me> | |
| tpriorities< T > | subAll (const std::string *name, const args &a) const BY_SIDE_FUNC(name |
| tpriorities< T > subAll< T > | tpriorities ()) |
| bool | canEval (const args &a) const |
| priorType | prioritize (const args *it) const BY_SIDE_FUNC(it |
| str | eval (const args *it) BY_SIDE_FUNC(eval) |
| str | eval (const std::string &name, const args &a) |
| str | eval (const std::string &name, const args *a) BY_SIDE_FUNC(a |
| str | eval (name, a) |
| str | str ()) |
| str | eval (const std::string *name, const args &a) BY_SIDE_FUNC(name |
| str eval | str ()) |
| str | eval (const std::string *name, const args *a) BY_SIDE_FUNC(name &&a |
| str eval | str ()) |
| str | eval (const std::string &name) |
| str | eval (const std::string *it) BY_SIDE_FUNC(eval) |
| str | eval () |
| virtual void | rel () |
| template<typename T > | |
| nbool | is () const |
| nbool | is (const typeProvidable &to) const |
| nbool | is (const typeProvidable *it) const BY_SIDE_FUNC(is) |
| nbool | is (const type &to) const |
| nbool | is (const type *it) const BY_SIDE_FUNC(is) |
| template<typename T > | |
| tstr< T > | as () const |
| str | as (const typeProvidable &to) const |
| str | as (const typeProvidable *it) const BY_SIDE_FUNC(as) |
| str | as (const type &to) const |
| str | as (const type *it) const BY_SIDE_FUNC(as) |
| template<typename T > | |
| nbool | isImpli () const |
| virtual nbool | isImpli (const type &to) const |
| nbool | isImpli (const typeProvidable &to) const |
| nbool | isImpli (const typeProvidable *it) const BY_SIDE_FUNC(isImpli) |
| template<typename T > | |
| tstr< T > | asImpli () const |
| virtual str | asImpli (const type &to) const |
| str | asImpli (const typeProvidable &to) const |
| str | asImpli (const typeProvidable *it) const BY_SIDE_FUNC(asImpli) |
| virtual nbool | isComplete () const |
| virtual str | infer () const |
| virtual void | accept (const visitInfo &i, visitor &v) |
| void | inFrame (const bicontainable *args) const override |
| void | outFrame () const override |
| virtual void | inFrame (const bicontainable *args) const=0 |
| void | inFrame () const |
| virtual void | outFrame () const=0 |
Public Member Functions inherited from by::frameInteractable | |
| void | inFrame () const |
Static Public Member Functions | |
| static scope & | makeSubs () |
Friends | |
| template<typename T , nbool > | |
| struct | tmarshaling |
Additional Inherited Members | |
Public Attributes inherited from by::node | |
| T sub | name |
| T sub | nullptr |
| tpriorities< T > subAll< T > | name |
| priorType prioritize | it |
| priorType prioritize | NO_MATCH |
| str eval | name |
Static Public Attributes inherited from by::baseObj | |
| static const std::string | COMMON_NAME = "@common" |
| static const std::string | EXPAND_NAME = "@expand" |
Protected Member Functions inherited from by::baseObj | |
| baseObj ()=default | |
| Default constructor for baseObj. | |
| baseObj (const baseObj *org, nbool isScripted) | |
| Constructs a baseObj from an existing origin object. | |
| str | _onEvalSub (node &sub, const args &a) override |
| Protected virtual method for evaluating a sub-node. | |
| void | _setSrc (const src &s) override |
| virtual void | _inFrame (frame &fr, const bicontainable *args) const |
| Enters this object's frame into the current execution stack. | |
| virtual void | _setType (const mgdType &new1) |
| Sets the script type for this base object. | |
| virtual void | _setModifier (const modifier &mod) |
| virtual str | _onBeforeCtor () |
| Hook method called before the object's constructor is fully executed. | |
Protected Member Functions inherited from by::node | |
| void | _setSrc (const src *it) BY_SIDE_FUNC(_setSrc) |
Protected Attributes inherited from by::baseObj | |
| tstr< baseObj > | _org |
Base class for error hierarchy.
The base class of the byeol language err class hierarchy. Includes common logic and interfaces for error handling.
Byeol's grammar distinguishes two types of errors. One is known error represented by ?, and the other is exception - cases where errors are returned without being specified as an errorable type. However, in implementation, both are completely identical error objects. Errors are only distinguished by their origin: nerr generated by parser or verifier in native environment, and err generated by byeol code.
Uses this frame to provide callstack information. As explained in frame, frame is created by baseObj during function calls. Later, frame is del()ed by frames, only losing strong references but not immediately deleted from heap. (In this project, it's extremely rare to directly new/delete on heap without reference counting via tstr from the memlite module.) Therefore, as long as err lives, the referenced frame data is also maintained.
nerr is primarily created by core module's __core_when__. Code looks like this:
The above code means if stmt is nullptr, the IS_NUL error is added to the errReport object returned by getReport(), and the function terminates while returning blk.
Logs use the clog module to log the error. Meanwhile, dump() exposes as much information as possible including callstack.
nerr is managed by errCode for management purposes. nerr is mainly generated by parser or verifier, which helps easily search detailed information by giving codes like Err2203 along with code 2203 when syntax errors occur. errCode also simply defines description strings as literal constants for reference.