public Symbol Parse(string aLine, SymbolCollection aCollection) { Symbol ret = null; // BasicSymbol basicSymbol = Parse(aLine); if (basicSymbol != null) { uint baseAddress = aCollection.BaseAddress; uint offsetAddress = basicSymbol.iAddress - baseAddress; if (basicSymbol.iAddress < baseAddress) { ret = null; } else { ret = Symbol.New(aCollection); // ret.OffsetAddress = offsetAddress; ret.Size = basicSymbol.iSize; ret.Name = basicSymbol.iName; ret.Object = basicSymbol.iObject; // Make sure it's tagged as coming from a symbol file ret.Source = TSymbolSource.ESourceWasSymbolFile; } } // return(ret); }
public static BasicSymbol Parse(string aLine) { BasicSymbol ret = null; // Match m = KSimpleSymbolRegEx.Match(aLine); if (m.Success) { BasicSymbol symbol = new BasicSymbol(); symbol.iAddress = uint.Parse(m.Groups["Address"].Value, System.Globalization.NumberStyles.HexNumber); symbol.iSize = uint.Parse(m.Groups["Size"].Value, System.Globalization.NumberStyles.HexNumber); string symbolAndObject = m.Groups["SymbolAndObject"].Value; ParseSymbolText(symbolAndObject, out symbol.iName, out symbol.iObject); ret = symbol; } // return(ret); }