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); }
public override void GCMark() { if (_sgsObject != IntPtr.Zero) { NI.ObjGCMark(_sgsEngine.ctx, _sgsObject); } }
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)); }
public string ConvertToString() { Variable v2 = new Variable(ctx, var); NI.ToStringBufP(ctx.ctx, ref v2.var); string s = v2.GetString(); v2.Release(); return(s); }
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; }
public Variable GetMetaObj() { if (var.type == VarType.Object) { return(_sgsEngine.SGSObjectVar(NI.ObjGetMetaObj(var.data.O))); } else { return(_sgsEngine.NullVar()); } }
} // 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); }
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); } }
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(); }
public void Acquire() { NI.Acquire(ctx.ctx, ref var); }
public override void GCMark() { NI.GCMark(_sgsEngine.ctx, ref var); }
public Int32 ArraySize() { return(NI.ArraySize(var)); }
public Variable(Context c) : base(c) { var = NI.MakeNull(); }
public Int32 ArrayFind(Variable val) { return(NI.ArrayFind(_sgsEngine.ctx, var, val.var)); }
public static int _sgsExpr(IntPtr ctx, IntPtr varobj) { IObjectBase obj = _IP2Obj(varobj); return(obj._intOnExpr(Engine.GetCtx(ctx), (ExprOp)NI.ObjectArg(ctx))); }
public bool IsMap() { return(NI.IsMap(var) != 0); }
public double GetReal() { return(NI.GetRealP(ctx.ctx, ref var)); }
public string GetString() { return(NI.GetString(var)); }
public void ArrayPop(Int32 count) { NI.ArrayPop(_sgsEngine.ctx, var, count, 0); }
public bool EventState(EventStateType est) { return(NI.EventState(_sgsEngine.ctx, var, est) != 0); }
public bool Unset(Variable key) { return(NI.Unset(_sgsEngine.ctx, var, key.var) != 0); }
public Int32 ArrayRemove(Variable val, bool all) { return(NI.ArrayRemove(_sgsEngine.ctx, var, val.var, all ? 1 : 0)); }
public bool GetBool() { return(NI.GetBoolP(ctx.ctx, ref var) != 0); }
public void ArrayPushFromStack(Context ctx, Int32 count) { NI.ArrayPush(ctx.ctx, var, count); }
public Int64 GetInt() { return(NI.GetIntP(ctx.ctx, ref var)); }
public static int _sgsSetIndex(IntPtr ctx, IntPtr varobj) { IObjectBase obj = _IP2Obj(varobj); return(obj._intOnSetIndex(Engine.GetCtx(ctx), NI.ObjectArg(ctx) != 0)); }
public bool IsDict() { return(NI.IsDict(var) != 0); }
public void ArrayPopToStack(Context ctx, Int32 count) { NI.ArrayPop(ctx.ctx, var, count, 1); }
public byte[] GetByteArray() { return(NI.GetByteArray(var)); }
public virtual void _InitMetaObject() { DNMetaObject dnmo = _sgsEngine._GetMetaObject(GetType()); NI.ObjSetMetaObj(_sgsEngine.ctx, _sgsObject, dnmo._sgsObject); }