Exemplo n.º 1
0
        public void Init(IEnumerable <CLogEncodingCLogTypeSearch> savedTypes)
        {
            _traceEmittorX = new CLogCustomTraceEmittorFactory();
            _parent        = new CLogTypeSearchNode();

            foreach (var e in savedTypes.ToArray())
            {
                AddType(e);
            }
        }
Exemplo n.º 2
0
        private void AddType(CLogTypeSearchNode searchNode, CLogTypeSearchNode parentNode, CLogEncodingCLogTypeSearch fileNode, ref bool isNew, int index = 0)
        {
            if (index == fileNode.DefinationEncoding.Length)
            {
                searchNode.UserNode = fileNode;
                return;
            }

            CLogTypeSearchNode n;

            if (!searchNode.Nodes.TryGetValue(fileNode.DefinationEncoding[index], out n))
            {
                searchNode.Nodes[fileNode.DefinationEncoding[index]] = n = new CLogTypeSearchNode();
                isNew = true;
            }

            AddType(n, searchNode, fileNode, ref isNew, index + 1);
        }
Exemplo n.º 3
0
        public CLogEncodingCLogTypeSearch FindTypeAndAdvance(string encoded, CLogLineMatch traceLineMatch, ref int index)
        {
            CLogTypeSearchNode start = _parent;
            string             type  = "";

            CLogTypeSearchNode prev = null;
            int?prevIdx             = null;

            for (; ;)
            {
                type += encoded[index];

                if (!start.Nodes.TryGetValue(encoded[index], out start))
                {
                    if (null != prev && null != prev.UserNode)
                    {
                        if (null != traceLineMatch)
                        {
                            prev.UserNode.UsedBySourceFile.Add(traceLineMatch.SourceFile);
                        }

                        index = prevIdx.Value;
                        return(prev.UserNode);
                    }

                    return(null);
                }

                if (index == encoded.Length - 1)
                {
                    if (null != traceLineMatch)
                    {
                        start.UserNode.UsedBySourceFile.Add(traceLineMatch.SourceFile);
                    }

                    return(start.UserNode);
                }

                prev    = start;
                prevIdx = index;
                ++index;
            }
        }