private void SetDataRegion(string regionSpecifier, ITargetConnector connector) { KeyValuePair<string, string>? regionSpecifierPair = StringHelper.SplitToKeyValue (regionSpecifier, "|"); if (regionSpecifierPair == null) throw new FuzzParseException ("DataRegion contains invalid formatted specifier '{0}'", regionSpecifier); switch (regionSpecifierPair.Value.Key) { case "variable": _fuzzTarget = connector.SymbolTable.CreateVariable (regionSpecifierPair.Value.Value, 8); break; case "address": UInt64 address; if (regionSpecifierPair.Value.Value.StartsWith ("0x", StringComparison.InvariantCultureIgnoreCase) && UInt64.TryParse (regionSpecifierPair.Value.Value.Substring (2), NumberStyles.HexNumber, NumberFormatInfo.InvariantInfo, out address)) _fuzzTarget = connector.SymbolTable.CreateVariable (new StaticAddress (address), 8); else throw new FuzzParseException ("Cannot parse address in format '{0}' use '0x12345678'", regionSpecifierPair.Value.Value); break; case "calc": _fuzzTarget = connector.SymbolTable.CreateCalculatedVariable (regionSpecifierPair.Value.Value, 8); break; case "cstyle_reference_operator": _fuzzTarget = connector.SymbolTable.CreateCStyleReferenceOperatorVariable(regionSpecifierPair.Value.Value, 8); break; default: throw new FuzzParseException ("Invalid data region specifier '{0}'", regionSpecifierPair.Value.Key); } }
public SymbolTableMethod(ISymbolTable symbolTable, string name, ISymbolTableVariable[] parameters) { _symbolTable = symbolTable; _name = name; _parameters = parameters; }