XTAL_PREBIND_ALIAS

XTAL_PREBIND_ALIAS(ClassName, Name);

XTAL_PREBINDと基本動作は同じです。違いはC++のClassNameをXtal環境にNameという名前で登録する点です。これで登録すると、cpp_classをfilelocalなどにdefしなかった場合に例外などが投げられてクラス名が必要となったときなどに使われる名前がaliasのほうに変わります(cpp_classをdefしていた場合はその名前になります)。

Example

C++

class Foo{
public:
    Foo(){
        StringPtr("foo constructed")->p();
    }
 
    void print(){
        StringPtr("foo")->p();
    }
};
 
XTAL_PREBIND_ALIAS(Foo, Bar){
    Xdef_ctor0();
}
XTAL_BIND_ALIAS(Foo, Bar){
    Xdef_method(print);
}
 
void exec_xtal(){
    xtal::global()->def(Xid(Bar), xtal::cpp_class<Foo>());
    Xsrc((
            bar : Bar();
            bar.p;
            bar.print;
    ))->call();
}

Output

foo constructed
<(instance of lib::builtin::global::Foo)>
foo
reference/xtal_prebind_alias.txt · 最終更新: 2012/03/22 22:40 by sukai
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0