35 this->_setOrigin(*
this);
39 const node& getSubPack()
const override {
48 scope& subs()
override {
return *_subs; }
50 const modifier& getModifier()
const override {
return *_mod; }
53 baseObj* ret =
new super(*
this);
54 ret->_setOrigin(*
this);
58 clonable* cloneDeep()
const override {
59 me* ret =
new me(*
this);
60 ret->onCloneDeep(*
this);
64 void onCloneDeep(
const clonable& from)
override {
65 const me& rhs = (
const me&) from;
66 if(rhs._subs) _subs.bind((
scope&) *rhs._subs->cloneDeep());
67 if(rhs._mod) _mod.bind((
modifier&) *rhs._mod->cloneDeep());
71 void _setModifier(
const modifier& mod)
override { _mod.bind(mod); }
Base class for all objects in byeol language.
Definition: baseObj.hpp:24
Interface for objects that can be cloned.
Definition: clonable.hpp:12
Access modifier for class members and func.
Definition: modifier.hpp:12
Base class for all AST nodes in byeol language.
Definition: node.hpp:30
Native type system for byeol language.
Definition: ntype.hpp:19
Template base object origin for user-defined classes.
Definition: tbaseObjOrigin.hpp:25
Mock object template for testing and verification.
Definition: tmock.hpp:13
Strong reference smart pointer with strict type checking.
Definition: tstr.hpp:13
Template type wrapper for type metadata management.
Definition: ttype.hpp:16
Type trait to check if T is subclass of super.
Definition: rtti.hpp:48