예제 #1
0
        public static IshtarObject *ToIshtarObject(string str, CallFrame frame = null, IshtarObject **node = null)
        {
            var arg   = IshtarGC.AllocObject(TYPE_STRING.AsRuntimeClass(), node);
            var clazz = IshtarUnsafe.AsRef <RuntimeIshtarClass>(arg->clazz);

            arg->vtable[clazz.Field["!!value"].vtable_offset] = StringStorage.Intern(str);
            return(arg);
        }
예제 #2
0
        public static void InitTable(Dictionary <string, RuntimeIshtarMethod> table)
        {
            new RuntimeIshtarMethod("@_println", Public | Static | Extern, ("val", TYPE_STRING))
            .AsNative((delegate * < CallFrame, IshtarObject * *, IshtarObject * >) & FPrintLn)
            .AddInto(table, x => x.Name);

            new RuntimeIshtarMethod("@_readline", Public | Static | Extern, TYPE_STRING.AsClass())
            .AsNative((delegate * < CallFrame, IshtarObject * *, IshtarObject * >) & FReadLine)
            .AddInto(table, x => x.Name);
        }