represents native c++ type system for byeol language More...
#include <ntype.hpp>
Public Member Functions | |
| nbool | operator== (const type &rhs) const override |
| check whether two ntype are same in both of native and byeol runtime environments | |
| template<typename T > | |
| nbool | isImpli () const |
| whether variable 'it' can be a subtype of T in runtime | |
| virtual nbool | isImpli (const type &to) const |
| nbool | isImpli (const type *it) const BY_SIDE_FUNC(isImpli) |
| nbool | isImpli (const typeProvidable &to) const |
| nbool | isImpli (const typeProvidable *it) const BY_SIDE_FUNC(isImpli) |
| template<typename T > | |
| tstr< T > | asImpli (const node &it) const |
| template<typename T > | |
| tstr< T > | asImpli (const node *it) const BY_SIDE_FUNC(asImpli< T >) |
| virtual str | asImpli (const node &from, const type &to) const |
| str | asImpli (const node &from, const type *to) const BY_SIDE_FUNC(to |
| str | asImpli (from, *to) |
| str | str ()) |
| str | asImpli (const node *from, const type &to) const BY_SIDE_FUNC(from |
| str asImpli | str ()) |
| str | asImpli (const node *from, const type *to) const BY_SIDE_FUNC(from &&to |
| str asImpli | str ()) |
| virtual nbool | isCustom () const |
| template<typename T > | |
| nbool | is () const |
| nbool | is (const type &to) const |
| nbool | is (const type *it) const BY_SIDE_FUNC(is) |
| template<typename T > | |
| tstr< T > | as (const node &it) const |
| template<typename T > | |
| tstr< T > | as (const node *it) const BY_SIDE_FUNC(as< T >) |
| str | as (const node &from, const type &to) const |
| str | as (const node &from, const type *to) const BY_SIDE_FUNC(to |
| str | as (from, *to) |
| str | str ()) |
| str | as (const node *from, const type &to) const BY_SIDE_FUNC(from |
| str as | str ()) |
| virtual str | as (const node *from, const type *to) const BY_SIDE_FUNC(from &&to |
| virtual str as | str ()) |
| virtual nbool | isImmutable () const |
| Checks if this type is immutable. | |
| nbool | isSameSign (const type &rhs) const |
| const ntype * | promote (const ntype &r) const |
| const ntype * | promote (const ntype *it) const BY_SIDE_FUNC(promote) |
| const ntype * | promote (const typeProvidable &r) const |
| const ntype * | promote (const typeProvidable *it) const BY_SIDE_FUNC(promote) |
| template<typename T > | |
| const ntype * | promote () const |
| static const ntype | promote (l, *r) |
| const params & | getParams () const BY_CONST_FUNC(getParams()) virtual params &getParams() |
| Retrieves a non-const reference to the parameters associated with this type. | |
| virtual const node * | getRet () const |
| virtual void | setRet (const node &new1) |
| void | setRet (const node *it) BY_SIDE_FUNC(setRet) |
| std::string | createNameWithParams () const |
| const nchar * | getMetaTypeName () const override |
Public Member Functions inherited from by::type | |
| virtual nbool | operator== (const me &rhs) const |
| Checks if two type objects represent the same type. | |
| nbool | operator!= (const me &rhs) const |
| virtual nbool | isTemplate () const =0 |
| virtual nbool | isAbstract () const =0 |
| virtual const std::string & | getName () const |
| virtual void * | make () const =0 |
| create an instance to be refered this type. | |
| template<typename T > | |
| T * | makeAs () const |
| virtual ncnt | size () const =0 |
| virtual nbool | init () |
| Initializes type metadata and constructs class hierarchy. | |
| virtual nbool | rel () |
| virtual const type & | getSuper () const =0 |
| virtual const nbool & | isInit () const =0 |
| const types & | getLeafs () const |
| Returns all most derived classes (leaf nodes) from this class. | |
| const types & | getSubs () const |
| const types & | getSupers () const |
| virtual nbool | isSuper (const type &it) const |
| Checks if this type is a super class of the given type. | |
| nbool | isSuper (const type *it) const BY_SIDE_FUNC(isSuper) |
| template<typename T > | |
| nbool | isSuper () const |
| nbool | isSub (const type &it) const |
| Checks if this type is a sub class of the given type. | |
| nbool | isSub (const type *it) const BY_SIDE_FUNC(isSub) |
| template<typename T > | |
| nbool | isSub () const |
| const type & | getStatic () const BY_CONST_FUNC(_getStatic()) virtual const nchar *getMetaTypeName() const |
| Get meta type name for efficient type checking. | |
Static Public Member Functions | |
| static const ntype * | promote (const ntype &l, const ntype &r) |
| static const ntype * | promote (const ntype &l, const ntype *r) BY_SIDE_FUNC(r |
| static const ntype * | promote (const ntype *l, const ntype &r) BY_SIDE_FUNC(l |
| static const ntype * | promote (const ntype *l, const ntype *r) BY_SIDE_FUNC(l &&r |
Public Attributes | |
| str asImpli | from |
| str as | from |
| virtual str as | from |
| static const ntype | nullptr |
| static const ntype promote | l |
| static const ntype promote | nullptr |
Static Public Attributes | |
| static const std::string | META_TYPENAME = "ntype" |
Protected Member Functions | |
| virtual const impliAses & | _getImpliAses () const |
| virtual const ases & | _getAses () const |
Protected Member Functions inherited from by::type | |
| virtual types & | _getSubs ()=0 |
| virtual types & | _getSupers ()=0 |
| virtual type & | _getStatic () const =0 |
| void | _setInit (nbool newState) |
| virtual void | _onAddSubClass (const me &subClass) |
| Hook method called when a new subclass is registered with this type. | |
| virtual types ** | _onGetLeafs () const =0 |
| void | _setLeafs (types *newLeafs) const |
| virtual const std::string & | _getNativeName () const |
represents native c++ type system for byeol language
Core type class that provides type information, type conversion, and type deduction. Supports implicit/explicit casting, type compatibility checking, and parameter management. ntype stands for native type, representing meta-type information for C++ classes. mgdType stands for managed type, representing meta-type information for types defined in the Byeol language (such as functions or objects).
One important note: Although mgdType inherits from ntype in terms of implementation, this inheritance relationship does not apply at the type level when represented as type. In other words, when inheritance hierarchies such as getSupers() or getSubs() are represented, their contents can include both ntype and mgdType instances. mgdType::getSupers() is not restricted to containing only mgdType entries.
The name of an mgdType corresponds to the type name as defined in the Byeol language, while an ntype corresponds to the C++ class name.
Retrieves a non-const reference to the parameters associated with this type.
params object, allowing modification of the type's parameters. Checks if this type is immutable.
Immutable types (like scalars) are treated differently in memory management and pass-by-value semantics.
operator==() compares type equality in the native runtime(C++) environment — it returns true if both objects are of the same class. In contrast, isSameSign() compares type equality in the byeol runtime environment.
check whether two ntype are same in both of native and byeol runtime environments
mgdType inherits ntype, so this operator==() is also able to checks equality in managed code.