//marshall version public ModuleScope(GlobalScope globs) : base(globs) { }
void InitBuiltins(GlobalScope globs) { globs.Define(Int); globs.Define(Float); globs.Define(Bool); globs.Define(String); globs.Define(Void); globs.Define(Any); globs.Define(ClassType); { var fn = new FuncSymbolNative("suspend", Type("void"), delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { return(CoroutineSuspend.Instance); } ); globs.Define(fn); } { var fn = new FuncSymbolNative("yield", Type("void"), delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { return(CoroutinePool.New <CoroutineYield>(frm.vm)); } ); globs.Define(fn); } //TODO: this one is controversary, it's defined for BC for now { var fn = new FuncSymbolNative("fail", Type("void"), delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { status = BHS.FAILURE; return(null); } ); globs.Define(fn); } { var fn = new FuncSymbolNative("start", Type("int"), delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { var val_ptr = frm.stack.Pop(); int id = frm.vm.Start((VM.FuncPtr)val_ptr._obj, frm).id; val_ptr.Release(); frm.stack.Push(Val.NewNum(frm.vm, id)); return(null); }, new FuncArgSymbol("p", TypeFunc("void")) ); globs.Define(fn); } { var fn = new FuncSymbolNative("stop", Type("void"), delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { var fid = (int)frm.stack.PopRelease().num; frm.vm.Stop(fid); return(null); }, new FuncArgSymbol("fid", Type("int")) ); globs.Define(fn); } { var fn = new FuncSymbolNative("type", Type("Type"), delegate(VM.Frame frm, FuncArgsInfo args_info, ref BHS status) { var o = frm.stack.Pop(); frm.stack.Push(Val.NewObj(frm.vm, o.type, ClassType)); o.Release(); return(null); }, new FuncArgSymbol("o", Type("any")) ); globs.Define(fn); } }
public ModuleScope(string module_name, GlobalScope globs) : base(globs) { this.module_name = module_name; }