Beispiel #1
0
 public void IterGetKeyValue(out Variable key, out Variable val)
 {
     NI.Variable outkey, outval;
     NI.IterGetData(_sgsEngine.ctx, var, out outkey, out outval);
     key = _sgsEngine.Var(outkey, false);
     val = _sgsEngine.Var(outval, false);
 }
Beispiel #2
0
 public override void GCMark()
 {
     if (_sgsObject != IntPtr.Zero)
     {
         NI.ObjGCMark(_sgsEngine.ctx, _sgsObject);
     }
 }
Beispiel #3
0
 public Variable GetIterator()
 {
     NI.Variable iter;
     if (NI.GetIterator(_sgsEngine.ctx, var, out iter) == 0)
     {
         throw new SGSException(RC.ENOTSUP, "Object does not support iterators");
     }
     return(_sgsEngine.Var(iter, false));
 }
Beispiel #4
0
        public string ConvertToString()
        {
            Variable v2 = new Variable(ctx, var);

            NI.ToStringBufP(ctx.ctx, ref v2.var);
            string s = v2.GetString();

            v2.Release();
            return(s);
        }
Beispiel #5
0
 public void FreeClassObject()
 {
     //	Console.WriteLine("[freed "+ToString()+"]");
     if (_sgsObject == IntPtr.Zero)
     {
         throw new SGSException(RC.EINPROC, "FreeClassObject - object is not allocated");
     }
     NI.ObjRelease(_sgsEngine.ctx, _sgsObject);
     _sgsObject = IntPtr.Zero;
 }
Beispiel #6
0
 public Variable GetMetaObj()
 {
     if (var.type == VarType.Object)
     {
         return(_sgsEngine.SGSObjectVar(NI.ObjGetMetaObj(var.data.O)));
     }
     else
     {
         return(_sgsEngine.NullVar());
     }
 }
Beispiel #7
0
        }                                                // no meta object for functions

        public override int OnCall(Context ctx)
        {
            NI.FuncName(ctx.ctx, name);
            bool gotthis = ctx.Method();

            if (!gotthis && !thisMethodInfo.IsStatic)
            {
                // if 'this' was not passed but the method is not static, error
                ctx.Msg(MsgLevel.ERROR, "Expected 'this' for non-static method");
                return(RC.EINVAL);
            }

            object thisvar = null;

            if (gotthis)
            {
                parseVarParams[0] = null;
                parseVarParams[1] = ctx.StackItem(0);
                parseVarThis.Invoke(ctx, parseVarParams);
                thisvar = parseVarParams[0];
            }
            int outArg = 0;
            int inArg  = gotthis ? 1 : 0;

            foreach (MethodInfo pva in parseVarArgs)
            {
                if (pva.Name == "_ParseVar_CallingThread")
                {
                    callArgs[outArg] = ctx;
                }
                else
                {
                    parseVarParams[0] = null;
                    parseVarParams[1] = ctx.StackItem(inArg++);
                    pva.Invoke(ctx, parseVarParams);
                    callArgs[outArg] = parseVarParams[0];
                }
                outArg++;
            }

            ctx.PushObj(thisMethodInfo.Invoke(thisvar, callArgs));

            // pooled resource cleanup
            parseVarParams[0] = null;
            parseVarParams[1] = null;
            for (int i = 0; i < parseVarArgs.Length; ++i)
            {
                callArgs[i] = null;
            }

            return(1);
        }
Beispiel #8
0
        public static string MakeExceptionMessage(int code, string additionalInfo)
        {
            string codeMsg = NI.ResultToString(code);

            if (additionalInfo != null && additionalInfo != "")
            {
                return(string.Format("{0} ({1})", additionalInfo, codeMsg));
            }
            else
            {
                return(codeMsg);
            }
        }
Beispiel #9
0
        public void AllocClassObject()
        {
            if (_sgsObject != IntPtr.Zero)
            {
                throw new SGSException(RC.EINPROC, "AllocClassObject - object is already allocated");
            }
            IntPtr iface = GetClassInterface();

            NI.Variable var;
            NI.CreateObject(_sgsEngine.ctx, HDL.Alloc(this), iface, out var);
            _sgsObject = var.data.O;

            _InitMetaObject();
        }
Beispiel #10
0
 public void Acquire()
 {
     NI.Acquire(ctx.ctx, ref var);
 }
Beispiel #11
0
 public override void GCMark()
 {
     NI.GCMark(_sgsEngine.ctx, ref var);
 }
Beispiel #12
0
 public Int32 ArraySize()
 {
     return(NI.ArraySize(var));
 }
Beispiel #13
0
 public Variable(Context c) : base(c)
 {
     var = NI.MakeNull();
 }
Beispiel #14
0
 public Int32 ArrayFind(Variable val)
 {
     return(NI.ArrayFind(_sgsEngine.ctx, var, val.var));
 }
Beispiel #15
0
 public static int _sgsExpr(IntPtr ctx, IntPtr varobj)
 {
     IObjectBase obj = _IP2Obj(varobj); return(obj._intOnExpr(Engine.GetCtx(ctx), (ExprOp)NI.ObjectArg(ctx)));
 }
Beispiel #16
0
 public bool IsMap()
 {
     return(NI.IsMap(var) != 0);
 }
Beispiel #17
0
 public double GetReal()
 {
     return(NI.GetRealP(ctx.ctx, ref var));
 }
Beispiel #18
0
 public string GetString()
 {
     return(NI.GetString(var));
 }
Beispiel #19
0
 public void ArrayPop(Int32 count)
 {
     NI.ArrayPop(_sgsEngine.ctx, var, count, 0);
 }
Beispiel #20
0
 public bool EventState(EventStateType est)
 {
     return(NI.EventState(_sgsEngine.ctx, var, est) != 0);
 }
Beispiel #21
0
 public bool Unset(Variable key)
 {
     return(NI.Unset(_sgsEngine.ctx, var, key.var) != 0);
 }
Beispiel #22
0
 public Int32 ArrayRemove(Variable val, bool all)
 {
     return(NI.ArrayRemove(_sgsEngine.ctx, var, val.var, all ? 1 : 0));
 }
Beispiel #23
0
 public bool GetBool()
 {
     return(NI.GetBoolP(ctx.ctx, ref var) != 0);
 }
Beispiel #24
0
 public void ArrayPushFromStack(Context ctx, Int32 count)
 {
     NI.ArrayPush(ctx.ctx, var, count);
 }
Beispiel #25
0
 public Int64 GetInt()
 {
     return(NI.GetIntP(ctx.ctx, ref var));
 }
Beispiel #26
0
 public static int _sgsSetIndex(IntPtr ctx, IntPtr varobj)
 {
     IObjectBase obj = _IP2Obj(varobj); return(obj._intOnSetIndex(Engine.GetCtx(ctx), NI.ObjectArg(ctx) != 0));
 }
Beispiel #27
0
 public bool IsDict()
 {
     return(NI.IsDict(var) != 0);
 }
Beispiel #28
0
 public void ArrayPopToStack(Context ctx, Int32 count)
 {
     NI.ArrayPop(ctx.ctx, var, count, 1);
 }
Beispiel #29
0
 public byte[] GetByteArray()
 {
     return(NI.GetByteArray(var));
 }
Beispiel #30
0
        public virtual void _InitMetaObject()
        {
            DNMetaObject dnmo = _sgsEngine._GetMetaObject(GetType());

            NI.ObjSetMetaObj(_sgsEngine.ctx, _sgsObject, dnmo._sgsObject);
        }