예제 #1
0
        public string GetDebugString(string name)
        {
            string result = "";

            result += retType.ToString() + " " + name + (null != classType ? ":" + classType.className : "") + "(";
            for (int iArg = 0; iArg < argTypes.Count; ++iArg)
            {
                ITypeDef argdef = argTypes[iArg] as ITypeDef;
                if (0 != iArg)
                {
                    result += ", ";
                }
                result += argdef.ToString() + (iArg >= minArgs ? "?" : "");
            }
            if (varargs)
            {
                result += "[, ...]";
            }
            result += ");\n";
            return(result);
        }
예제 #2
0
        public VarStackRef AddVariable(string name, bool global, ITypeDef type, object value = null)
        {
            Variable var;

            if (global)
            {
                var = new Variable(name, type, value);
                _globals.Set(name, var);
                return(new VarStackRef(var, true));
            }

            if (_varStack.Count == _varCount)
            {
                var = new Variable(name, type, value);
                _varStack.Add(var);
            }
            else
            {
                var = _varStack[_varCount];
                if (null == var)
                {
                    var = new Variable(name, type, value);
                    _varStack[_varCount] = var;
                }
                else
                {
                    var.Set(name, type, value);
                }
            }
            ++_varCount;

#if PEBBLE_TRACESTACK
            TraceLog("AddVariable " + type.ToString() + " " + name + "[" + (_varCount - 1) + "] = <" + value + ">");
#endif

            return(new VarStackRef(type, -1, _varCount - _callStack[_callCount - 1].varStackStart - 1));
        }