Exemplo n.º 1
0
        //============================================================
        // <T>解析*.h文件,查找相应的类的信息。</T>
        //
        // @param fileH 要解析的*.h文件
        // @param classStr 需要匹配的类的类名信息
        // @return 返回匹配到的类的结果。若是没有则返回null
        //============================================================
        public FCppClass ParserFileH(string fileH, string classStr)
        {
            FLineFile lineFileH = new FLineFile(fileH);
            FStrings  lines     = lineFileH;

            for (int n = 0; n < lines.Count; n++)
            {
                if (FCppClass.IsClass(lines, n))
                {
                    string strTemp = lines[n].Trim();
                    int    end     = strTemp.Length;
                    if (strTemp.Contains(':'))
                    {
                        end = strTemp.IndexOf(':');
                    }
                    strTemp = strTemp.Substring(0, end);
                    if (strTemp.Contains(classStr))
                    {
                        int       endIndex = GetPairNum(lines, n);
                        FCppClass cppclass = new FCppClass(lines, n, endIndex);
                        for (int i = n; i < endIndex; i++)
                        {
                            if (FCppField.IsField(lines, i))
                            {
                                FCppField field = new FCppField(lines, i);
                                cppclass.Field.Add(field);
                            }
                        }
                        return(cppclass);
                    }
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        //============================================================
        // <T>解析单个文件</T>
        //
        // @param 需要解析的单个文件
        //============================================================
        public void ParserSingleFile(FileInfo file)
        {
            FStrings strLines = FCppParser.GetLines(file.FullName);
            int      start, end = CheckParaAnnotate(strLines, 0, out start);

            for (int n = 0; n < strLines.Count; n++)
            {
                if (IsInInterregional(n, start, end))
                {
                    continue;
                }
                if (FCppClass.IsClass(strLines, n))
                {
                    string   classStr = GetClassString(strLines[n]);
                    FMapNode node     = new FMapNode(classStr, file.Name);
                    AddNode(node, file.FullName);
                    n = GetPairNum(strLines, n);
                }
            }
        }