Function definition in byeol language. More...
#include <func.hpp>
Public Member Functions | |
| func (const modifier &mod, const funcType &type) | |
| func (const modifier &mod, const funcType &type, const blockExpr &newBlock) | |
| func (const modifier &mod, const funcType &type, const scope &subs, const blockExpr &newBlock) | |
| const ntype & | getType () const override |
| blockExpr & | getBlock () |
| const blockExpr & | getBlock () const |
| void | setBlock (const blockExpr &new1) |
| scope & | subs () override |
| str | eval (const args &a) override |
| void | inFrame (const bicontainable *args) const override |
| void | outFrame () const override |
| const baseObj & | getOrigin () const override |
| ends & | getEnds () |
Gets the list of endExpr (defer-like statements) registered for this function. | |
| const ends & | getEnds () const BY_CONST_FUNC(getEnds()) void onCloneDeep(const clonable &from) override |
| nbool | isAbstract () const |
Public Member Functions inherited from by::baseFunc | |
| priorType | prioritize (const args &a) const override |
| virtual params & | getParams () |
| const params & | getParams () const BY_CONST_FUNC(getParams()) |
| virtual const node * | getRet () const |
| const src & | getSrc () const override |
| 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::instance | |
| instance (id newId) | |
| instance (const me &rhs) | |
| me & | operator= (const me &rhs)=default |
| void * | operator 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 life * | getBindTag () 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 > | |
| T * | cast () |
| template<typename T > | |
| const T * | cast () const BY_CONST_FUNC(cast< T >()) virtual void *cast(const type &to) |
| Safe cast to target type using type hierarchy information. | |
| const void * | cast (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 me * | clone () const =0 |
| virtual me * | cloneDeep () const |
| virtual void | onCloneDeep (const me &from) |
Public Member Functions inherited from by::frameInteractable | |
| void | inFrame () const |
Static Public Attributes | |
| static const std::string | LAMBDA_NAME = "@lambda" |
| static const std::string | CTOR_NAME = "@ctor" |
| static const std::string | GETTER_NAME = "@get" |
| static const std::string | SETTER_NAME = "@set" |
| static const std::array< std::string, 4 > | SPECIAL_FUNC_NAMES |
Static Public Attributes inherited from by::baseFunc | |
| static const std::string | ME = "me" |
Protected Member Functions | |
| virtual str | _interactFrame (node &meObj, scope &s, nidx exN) |
| Protected virtual method to interact with the execution frame during function evaluation. | |
| str | _run (nidx exN) |
Protected Member Functions inherited from by::baseFunc | |
| void | _setSrc (const src &newSrc) override |
Protected Member Functions inherited from by::node | |
| virtual str | _onEvalSub (node &sub, const args &a) |
| Protected virtual method for evaluating a sub-node. | |
| void | _setSrc (const src *it) BY_SIDE_FUNC(_setSrc) |
Protected Member Functions inherited from by::instance | |
| nbool | _setId (id new1) |
Friends | |
| class(ME(func, baseFunc), CLONE(func), VISIT()) typedef std | coreInternal |
Additional Inherited Members | |
Static Public Member Functions inherited from by::baseFunc | |
| static nbool | isFuncButNotClosure (const node &n) |
| Checks if the given node represents a function that is not a closure. | |
| static nbool | isFuncButNotClosure (const node *it) BY_SIDE_FUNC(isFuncButNotClosure) |
Static Public Member Functions inherited from by::instance | |
| static vault & | getVault () |
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 Protected Member Functions inherited from by::instance | |
| static instancer * | _getMgr () |
Function definition in byeol language.
Represents a user-defined function with parameters, return type, and executable block. Extends baseFunc to provide concrete function implementation with actual code body. Manages function execution context, parameter handling, and return value processing.
When a func is evaluated:
func implements frameInteractable, meaning it interacts with the execution frame stack. During execution, it calls inFrame() to register its scope and parameters, then outFrame() to clean up when execution completes.
func can be abstract (no body) when used in type definitions. Use isAbstract() to check. Abstract functions have no blockExpr and cannot be executed directly.
Protected virtual method to interact with the execution frame during function evaluation.
This method is a crucial internal mechanism for setting up the function's execution context within the current frame, managing me object and local scope.
| meObj | The "me" object (context) for this function call. |
| s | The scope associated with this function. |
| exN | An index related to exception handling. |
str object representing the result of the frame interaction. Reimplemented in by::nestedFunc.
| ends & by::func::getEnds | ( | ) |
Implements by::baseFunc.
Implements by::typeProvidable.
|
overridevirtual |
Implements by::frameInteractable.
|
overridevirtual |
Implements by::frameInteractable.
|
overridevirtual |
Reimplemented from by::baseFunc.
|
inlinestatic |