Пример #1
0
        internal MemoryEntry ReadValue(VariableKeyBase key, bool resolveVirtualRefs = true)
        {
            var variable = getOrCreateInfo(key);

            if (variable.References.Count == 0)
            {
                //implicit reference creation, because of possible cross call aliases
                variable.References.Add(key.CreateImplicitReference(this));
            }

            var value = readValue(variable, resolveVirtualRefs);

            return(value);
        }
Пример #2
0
        private bool tryReadValue(VariableKeyBase key, out MemoryEntry entry)
        {
            var info = getInfo(key);

            if (info == null)
            {
                ReportMemoryEntryCreation();
                entry = new MemoryEntry(UndefinedValue);
                return(false);
            }

            entry = resolveReferences(info.References);
            return(true);
        }
Пример #3
0
        private MemoryEntry readValue(VariableKeyBase key)
        {
            var info = getOrCreateInfo(key);

            return(readValue(info));
        }
Пример #4
0
        private void assign(VariableKeyBase key, MemoryEntry entry)
        {
            var info = getOrCreateInfo(key);

            assign(info, entry);
        }
Пример #5
0
 internal bool IsDefined(VariableKeyBase storage)
 {
     return(storage.GetVariable(this) != null);
 }
Пример #6
0
        private void writeDirect(VariableKeyBase storage, MemoryEntry value)
        {
            var variable = getOrCreateInfo(storage);

            assign(variable, value);
        }
Пример #7
0
 private VariableInfo getInfo(VariableKeyBase key)
 {
     return(key.GetVariable(this));
 }