예제 #1
0
    public static Variable cb_downcall(Variable list)
    {
        List <object> lo = new List <object>();
        VarDeque      it = Builtins.start_iter(list);

        while (Kernel.IterHasFlat(it, true))
        {
            lo.Add(Downcaller.DCArg(it.Shift()));
        }

        return(Downcaller.DCResult(list.Fetch().mo.setting, Downcaller.RawDowncall(lo.ToArray())));
    }
예제 #2
0
    public static Variable cb_finish(Variable si, Variable nam)
    {
        StringBuilder sb   = new StringBuilder();
        List <object> refs = new List <object>();

        Downcaller.SerializeNam(nam, sb, refs);
        object[] args = new object[refs.Count + 3];
        args[0] = "sub_finish";
        args[1] = Kernel.UnboxAny <object>(si.Fetch());
        args[2] = sb.ToString();
        refs.CopyTo(args, 3);
        return(Downcaller.DCResult(si.Fetch().mo.setting, Downcaller.RawDowncall(args)));
    }
예제 #3
0
 public static void cb_init_compartment(Variable c)
 {
     Downcaller.RawDowncall("set_binding", Downcaller.DCArg(c), Downcaller.obj_dirs, new UpcallReceiver());
 }