internal bool MatchesPrefix(ref string aLine, out MemOpFnBase aFunction)
        {
            bool foundMatch = false;

            aFunction = null;
            //
            foreach (KeyValuePair <string, MemOpFnBase> entry in iFunctionPrefixes)
            {
                int pos = aLine.IndexOf(entry.Key);
                //
                if (pos >= 0)
                {
                    SymbianUtils.PrefixParser.SkipPrefix(entry.Key, ref aLine);
                    aFunction  = entry.Value;
                    foundMatch = true;
                    break;
                }
            }
            //
            return(foundMatch);
        }
示例#2
0
        protected override void HandleFilteredLine(string aLine)
        {
            if (aLine != null)
            {
                MemOpBase   operation = null;
                MemOpFnBase function  = null;
                //
                bool handled = Prefixes.MatchesPrefix(ref aLine, out function);
                if (handled && function != null)
                {
                    operation = function.Parse(ref aLine, Prefixes);
                    if (operation != null)
                    {
                        // Finalise it
                        operation.LineNumber = System.Convert.ToUInt32(LineNumber);
                        operation.Finalise(SymbolManager);

                        // Notify
                        switch (function.Class)
                        {
                        case MemAnalysisLib.MemoryOperations.Class.TClass.EAllocation:
                            HandleOpAllocation(operation as MemOpAllocation);
                            break;

                        case MemAnalysisLib.MemoryOperations.Class.TClass.EDeallocation:
                            HandleOpFree(operation as MemOpFree);
                            break;

                        case MemAnalysisLib.MemoryOperations.Class.TClass.EReallocation:
                            HandleOpReallocation(operation as MemOpReallocation);
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }
 internal void AssociatePrefixWithFunction(string aPrefix, MemOpFnBase aFunction)
 {
     iFunctionPrefixes.Add(aPrefix, aFunction);
 }