Esempio n. 1
0
 //从匹配的Type中找到
 BaseMemberDeclaration_t FindMemberSyntaxNode(TypeDeclaration_t td)
 {
     if (ref_md != null)
     {
         for (int j = 0; j < td.Members.Count; ++j)
         {
             MemberDeclaration_t md = td.Members[j];
             //如果是儿子??
             if (md.Identifier == ref_md.Identifier && md.Field == ref_md.Field && !md.Identifier.StartsWith(PREFIX))
             {
                 newName        = PREFIX + md.Identifier; // new string(md.Identifier.ToCharArray().Reverse().ToArray());
                 ref_md.NewName = newName;                //保存新名字:
                 m_ReplaceHis.AppendFormat("{0}==>{1};", md.Identifier, newName);
                 return(md);
             }
         }
         return(null);
     }
     if (!td.Identifier.StartsWith(PREFIX))
     {
         newName         = PREFIX + td.Identifier; // new string(td.Identifier.ToCharArray().Reverse().ToArray());
         ref_tdt.NewName = newName;                //保存新名字:
         m_ReplaceHis.AppendFormat("{0}==>{1};", td.Identifier, newName);
         return(td);
     }
     return(null);
 }
Esempio n. 2
0
        /// <param name="td"></param>
        /// <param name="ref_ls"></param>
        /// <param name="index"></param>
        /// <returns></returns>
        TypeDeclaration_t FindTypeDeclaration(TypeDeclaration_t td, List <TypeDeclaration_t> ref_ls, int index)
        {
            if (td == null)
            {
                return(null);
            }

            bool bLast = ref_ls.Count == index + 1;

            if (td.Identifier == ref_ls[index].Identifier)
            {
                if (bLast)
                {
                    return(td);
                }

                for (int i = 0; i < td.Members.Count; ++i)
                {
                    MemberDeclaration_t md = td.Members[i];
                    if (md.pType != null)
                    {
                        TypeDeclaration_t sub = FindTypeDeclaration(md.pType, ref_ls, index + 1);
                        if (sub != null)
                        {
                            return(sub);
                        }
                    }
                }
            }
            return(null);
        }
Esempio n. 3
0
        //替换一个类...
        static async Task replaceTypeMemberID(CRenameTokenHandler handle, string FilePath, TypeDeclaration_t tdt, bool useInclude)
        {
            for (int k = 0; k < tdt.Members.Count; ++k)
            {
                MemberDeclaration_t md = tdt.Members[k];
                //替换并保存
                if (md.pType != null)
                {
                    await replaceTypeMemberID(handle, FilePath, md.pType, useInclude);

                    return;
                }

                await handle.beginReplace(tdt, md, FilePath);
                await SolutionAsync(handle, useInclude);

                //if (limit++ > 1)
                //    return;
            }

            {
                await handle.beginReplace(tdt, null, FilePath);
                await SolutionAsync(handle, useInclude);

                //if (limit++ > 1)
                //    return;
            }
        }
Esempio n. 4
0
 //
 void SaveTypeDeclaration(StringBuilder sb, TypeDeclaration_t tdt, string prefix)
 {
     sb.AppendLine(prefix + tdt.Identifier + ";");
     for (int k = 0; k < tdt.Members.Count; ++k)
     {
         MemberDeclaration_t md = tdt.Members[k];
         sb.AppendLine(prefix + "\t" + md.Field + ";" + md.Identifier);
         if (md.pType != null)
         {
             SaveTypeDeclaration(sb, md.pType, prefix + "\t");
         }
     }
 }
Esempio n. 5
0
        public async Task beginReplace(TypeDeclaration_t tdt, MemberDeclaration_t md, string FilePath)
        {
            this.ref_tdt = tdt;
            this.ref_md  = md;
            this.docName = FilePath;
            if (newSolution != null)//
            {
                m_solution  = newSolution;
                newSolution = null;
            }
            if (m_solution == null)
            {
                m_solution = await m_workspace.OpenSolutionAsync(this.m_sln);

                //if(m_solution!= m_workspace.CurrentSolution)
                //{
                //    CCLog.Error("m_solution!= m_workspace.CurrentSolution");
                //}
                if (m_solution == null)
                {
                    CCLog.Error("!!!!!!!!!!!!!!!OpenSolutionAsync fail." + this.m_sln);
                }
            }
        }
Esempio n. 6
0
        static void HandleMemberDeclarationSyntax(MemberDeclarationSyntax member, TypeDeclaration_t tdt)
        {
            //MemberDeclarationSyntax
            //
            if (member is FieldDeclarationSyntax)
            {
                FieldDeclarationSyntax    ed   = member as FieldDeclarationSyntax;
                VariableDeclarationSyntax decl = ed.Declaration;
                if (decl.Variables.Count > 0)
                {
                    VariableDeclaratorSyntax v = decl.Variables[0];
                    tdt.Members.Add(new MemberDeclaration_t("Field", v.Identifier.Text, ed));
                }
            }
            else if (member is EnumMemberDeclarationSyntax)
            {
                EnumMemberDeclarationSyntax ed = member as EnumMemberDeclarationSyntax;
                tdt.Members.Add(new MemberDeclaration_t("EnumMember", ed.Identifier.Text, ed));
            }
            else if (member is MethodDeclarationSyntax)
            {
                MethodDeclarationSyntax ed = member as MethodDeclarationSyntax;
                tdt.Members.Add(new MemberDeclaration_t("Method", ed.Identifier.Text, ed));
            }
            else if (member is PropertyDeclarationSyntax)
            {
                PropertyDeclarationSyntax ed = member as PropertyDeclarationSyntax;
                tdt.Members.Add(new MemberDeclaration_t("Property", ed.Identifier.Text, ed));
            }

            else if (member is EventFieldDeclarationSyntax)
            {
                EventFieldDeclarationSyntax ed   = member as EventFieldDeclarationSyntax;
                VariableDeclarationSyntax   decl = ed.Declaration;
                if (decl.Variables.Count > 0)
                {
                    VariableDeclaratorSyntax v = decl.Variables[0];
                    tdt.Members.Add(new MemberDeclaration_t("EventField", v.Identifier.Text, ed));
                }
            }
            else if (member is DelegateDeclarationSyntax)
            {
                DelegateDeclarationSyntax ed = member as DelegateDeclarationSyntax;
                tdt.Members.Add(new MemberDeclaration_t("Delegate", ed.Identifier.Text, ed));
            }
            else if (member is InterfaceDeclarationSyntax)
            {
                InterfaceDeclarationSyntax ed = member as InterfaceDeclarationSyntax;
                //tdt.Members.Add(new MemberDeclaration_t("Interface", ed.Identifier.Text, ed));
                MemberDeclaration_t t = new MemberDeclaration_t("Interface", ed.Identifier.Text, ed);
                tdt.Members.Add(t);
                //处理子节点...
                t.pType = new TypeDeclaration_t(tdt, member as BaseTypeDeclarationSyntax);
            }

            else if (member is EnumDeclarationSyntax)
            {
                EnumDeclarationSyntax ed = member as EnumDeclarationSyntax;
                MemberDeclaration_t   t  = new MemberDeclaration_t("Enum", ed.Identifier.Text, ed);
                tdt.Members.Add(t);
                //处理子节点...
                t.pType = new TypeDeclaration_t(tdt, member as BaseTypeDeclarationSyntax);
            }
            else if (member is ClassDeclarationSyntax)
            {
                ClassDeclarationSyntax ed = member as ClassDeclarationSyntax;

                MemberDeclaration_t t = new MemberDeclaration_t("Class", ed.Identifier.Text, ed);
                tdt.Members.Add(t);

                //处理子节点...
                t.pType = new TypeDeclaration_t(tdt, member as TypeDeclarationSyntax);
            }
            else if (member is StructDeclarationSyntax)
            {
                StructDeclarationSyntax ed = member as StructDeclarationSyntax;

                MemberDeclaration_t t = new MemberDeclaration_t("Struct", ed.Identifier.Text, ed);
                tdt.Members.Add(t);

                //处理子节点...
                t.pType = new TypeDeclaration_t(tdt, member as TypeDeclarationSyntax);
            }
            else if (member is ConstructorDeclarationSyntax)
            {
                member = member;
            }
            else if (member is DestructorDeclarationSyntax)
            {
                //忽略...
                member = member;
            }
            else if (member is OperatorDeclarationSyntax)
            {
                //忽略...
            }
            else if (member is IndexerDeclarationSyntax)
            {
                //忽略...
                member = member;
            }
            else if (member is ConversionOperatorDeclarationSyntax)
            {
                //忽略...
                member = member;
            }
            else
            {
                member = member;
                //sb.AppendLine("\t\tUnknow;" + member);
            }
            //                            sb.AppendLine("\t\t" + member + ";");
        }