38 coreInternal::setOrigin(*
this, *
this);
42 const node& getSubPod()
const override {
51 scope& subs()
override {
return *_subs; }
53 const modifier& getModifier()
const override {
return *_mod; }
55 clonable* clone()
const override {
57 coreInternal::setOrigin(*
ret, *
this);
61 clonable* cloneDeep()
const override {
62 me*
ret =
new me(*
this);
63 ret->onCloneDeep(*
this);
67 void onCloneDeep(
const clonable& from)
override {
68 const me& rhs = (
const me&) from;
69 if(rhs._subs) _subs.bind((
scope&) *rhs._subs->cloneDeep());
70 if(rhs._mod) _mod.bind((
modifier&) *rhs._mod->cloneDeep());
74 void _setModifier(
const modifier& mod)
override { _mod.bind(mod); }
Base class for representing byeol objects
Definition baseObj.hpp:73
Access modifier for type members
Definition modifier.hpp:13
Base class for all AST nodes in the byeol language
Definition node.hpp:195
represents native c++ type system for byeol language
Definition ntype.hpp:33
Template for easily defining baseObj origin objects
Definition tbaseObjOrigin.hpp:28