Пример #1
0
        ///////////////////////////////////////////////////////////////////////

        internal bool ResetValue(
            Interpreter interpreter,
            string key,
            bool zero
            )
        {
#if !MONO && NATIVE && WINDOWS
            object value;

            if (zero && (key != null) && TryGetValue(key, out value))
            {
                if ((value is string) && (interpreter != null) &&
                    interpreter.HasZeroString())
                {
                    ReturnCode zeroCode;
                    Result     zeroError = null;

                    zeroCode = StringOps.ZeroString(
                        (string)value, ref zeroError);

                    if (zeroCode != ReturnCode.Ok)
                    {
                        DebugOps.Complain(interpreter, zeroCode, zeroError);
                    }
                }
            }
#endif

            if (key == null)
            {
                return(false);
            }

            return(Remove(key));
        }
Пример #2
0
        ///////////////////////////////////////////////////////////////////////

        #region Private Methods
        internal void ResetValue(
            Interpreter interpreter,
            bool zero
            )
        {
#if !MONO && NATIVE && WINDOWS
            if (zero && (value is string) && (interpreter != null) &&
                interpreter.HasZeroString())
            {
                ReturnCode zeroCode;
                Result     zeroError = null;

                zeroCode = StringOps.ZeroString(
                    (string)value, ref zeroError);

                if (zeroCode != ReturnCode.Ok)
                {
                    DebugOps.Complain(interpreter, zeroCode, zeroError);
                }
            }
#endif

            value = null;

#if CACHE_RESULT_TOSTRING
#if !MONO && NATIVE && WINDOWS
            if (zero && (@string != null) && (interpreter != null) &&
                interpreter.HasZeroString())
            {
                ReturnCode zeroCode;
                Result     zeroError = null;

                zeroCode = StringOps.ZeroString(
                    @string, ref zeroError);

                if (zeroCode != ReturnCode.Ok)
                {
                    DebugOps.Complain(interpreter, zeroCode, zeroError);
                }
            }
#endif

            @string = null;
#endif
        }
Пример #3
0
        ///////////////////////////////////////////////////////////////////////

        #region Private Methods
        internal void ResetValue(
            Interpreter interpreter,
            bool zero
            )
        {
#if !MONO && NATIVE && WINDOWS
            if (zero && (interpreter != null) && interpreter.HasZeroString())
            {
                if (value is string)
                {
                    ReturnCode zeroCode;
                    Result     zeroError = null;

                    zeroCode = StringOps.ZeroString(
                        (string)value, ref zeroError);

                    if (zeroCode != ReturnCode.Ok)
                    {
                        DebugOps.Complain(interpreter, zeroCode, zeroError);
                    }
                }
                else if (value is Argument)
                {
                    ((Argument)value).ResetValue(interpreter, zero);
                }
                else if (value is Result)
                {
                    ((Result)value).ResetValue(interpreter, zero);
                }
            }
#endif

            value = null;

            if (arrayValue != null)
            {
                arrayValue.ResetValue(interpreter, zero);
                arrayValue = null;
            }
        }
Пример #4
0
        ///////////////////////////////////////////////////////////////////////

        internal void ResetValue(
            Interpreter interpreter,
            bool zero
            )
        {
#if !MONO && NATIVE && WINDOWS
            if (zero && (interpreter != null) && interpreter.HasZeroString())
            {
                foreach (KeyValuePair <string, object> pair in this)
                {
                    object value = pair.Value;

                    if (value is string)
                    {
                        ReturnCode zeroCode;
                        Result     zeroError = null;

                        zeroCode = StringOps.ZeroString(
                            (string)value, ref zeroError);

                        if (zeroCode != ReturnCode.Ok)
                        {
                            DebugOps.Complain(interpreter, zeroCode, zeroError);
                        }
                    }
                    else if (value is Argument)
                    {
                        ((Argument)value).ResetValue(interpreter, zero);
                    }
                    else if (value is Result)
                    {
                        ((Result)value).ResetValue(interpreter, zero);
                    }
                }
            }
#endif

            Clear();
        }