예제 #1
0
        private static void ProcessNestedTypes(AssemblyDataItem asmDataItem, ICollection <AssemblyDataItem> a)
        {
            foreach (var nested in asmDataItem.cecilType.NestedTypes)
            {
                if (!nested.IsNestedPublic)
                {
                    continue;
                }
                if (nested.IsClass)
                {
                    var nestedClassAsm = new AssemblyDataItem(AssemblyType.Class, nested, asmDataItem);

                    var memberName = nested.ToString().SimplifyTypesAndArrays();
                    memberName = StringConvertUtils.LowerCaseNeedsUnderscore(memberName);

                    nestedClassAsm.UniqueName = memberName;
                    AddAssemblyDataItem(a, nestedClassAsm);
                    BuildAsmChildOfClass(nestedClassAsm, a);
                }
                else
                {
                    int k = 0;
                }
            }
        }
예제 #2
0
        private string GetMemberName(MemberReference memberReference)
        {
            var    methodDefinition = memberReference as MethodDefinition;
            string memberName       = "";

            if (methodDefinition != null)
            {
                if (methodDefinition.IsConstructor)
                {
                    memberName = "ctor";
                }
                else if (methodDefinition.Name.StartsWith("op_Implicit"))
                {
                    memberName = "implop_" + methodDefinition.ReturnType.ToString().SimplifyTypes() + "(" +
                                 methodDefinition.Parameters[0].ParameterType.ToString().SimplifyTypes() + ")";
                }
                else if (methodDefinition.Name.StartsWith("op_"))
                {
                    memberName = StringConvertUtils.ConvertOperatorFromAssembly(memberReference.Name);
                }
                else
                {
                    memberName = StringConvertUtils.LowerCaseNeedsUnderscore(memberReference.Name);
                }
            }
            else
            {
                var memName = memberReference.Name;
                memberName = memName == "Item" ? "this" : StringConvertUtils.LowerCaseNeedsUnderscore(memName);
            }

            return(GetTypeName(memberReference.DeclaringType) + "." + memberName);
        }
예제 #3
0
        private static string GetMemberOrSignatureID(string codeContent, TypeKind t, bool simplifiedSignature)
        {
            switch (t)
            {
            case TypeKind.Class:
                string c1 = codeContent;
                if (c1.Contains(":"))
                {
                    c1 = c1.Remove(c1.IndexOf(':')).Trim();
                }
                c1 = StringConvertUtils.StripCommonModifiers(c1);
                return(c1);

            case TypeKind.Enum:
                var memberName = codeContent.Split(default(Char[]), StringSplitOptions.RemoveEmptyEntries)[0];
                memberName = memberName.TrimEnd(new[] { '=' });

                memberName = StringConvertUtils.LowerCaseNeedsUnderscore(memberName);
                return(memberName);

            case TypeKind.AutoProp:
                var memberName1 = codeContent.Split(' ')[1];
                memberName1 = StringConvertUtils.LowerCaseNeedsUnderscore(memberName1);
                return(memberName1);

            case TypeKind.Struct:
                string s = codeContent;
                s = s.Replace("internal ", "");
                return(s.Trim());

            case TypeKind.PureSignature:
                string sig          = codeContent;
                var    indexOfBrace = sig.IndexOf("{", StringComparison.Ordinal);
                if (indexOfBrace >= 0)                         // remove any body
                {
                    sig = sig.Remove(indexOfBrace).Trim();
                }

                if (simplifiedSignature)
                {
                    return(GetMemberNameFromPureSignature(sig));
                }
                else
                {
                    return(GetSignatureFromPureSignature(sig));
                }

            default:
                return("Error");
            }
        }
예제 #4
0
        //covered by unit tests

        internal static string GetMemberNameFromPureSignature(string sig)
        {
            sig = StringConvertUtils.StripCommonModifiers(sig);
            sig = Regex.Replace(sig, "<.*>", "");

            RegexMatcher matcher;
            var          found = TryMatchSignature(sig, out matcher);

            if (found)
            {
                string exp = matcher.GetSimplifiedMatch(sig);
                return((exp == "this") ? exp : StringConvertUtils.LowerCaseNeedsUnderscore(exp));
            }
            return("");
        }
예제 #5
0
        internal static void BuildAsmChildOfEnum(AssemblyDataItem asmDataItem, ICollection <AssemblyDataItem> a)
        {
            foreach (FieldDefinition field in asmDataItem.cecilType.Fields)
            {
                if (field.Name == "value__")
                {
                    continue;
                }
                var enumAsm = new AssemblyDataItem(AssemblyType.EnumValue, field.DeclaringType, asmDataItem);

                var parentName = field.DeclaringType.ToString().SimplifyTypesAndArrays();
                var memberName = StringConvertUtils.LowerCaseNeedsUnderscore(field.Name);
                enumAsm.UniqueName = string.Format("{0}.{1}", parentName, memberName);
                AddAssemblyDataItem(a, enumAsm);
            }
        }
예제 #6
0
        //covered by unit tests
        internal static string GetMemberNameFromPureSignature(string sig, bool simplified = false)
        {
            sig = StringConvertUtils.StripCommonModifiers(sig);

            sig = HandleGenerics(sig);

            RegexMatcher matcher;
            var          found = TryMatchSignature(sig, out matcher);

            if (found)
            {
                string exp = simplified ? matcher.GetSimplifiedMatch(sig) : matcher.GetFullMatch(sig);

                return(StringConvertUtils.LowerCaseNeedsUnderscore(exp));
            }
            return("");
        }
예제 #7
0
 private static string MemberNameFromPropertyDefinition(PropertyDefinition propDefinition)
 {
     return(StringConvertUtils.LowerCaseNeedsUnderscore(propDefinition.Name));
 }
예제 #8
0
 private static string MemberNameFromFieldDefinition(FieldDefinition fieldDefinition)
 {
     return(StringConvertUtils.LowerCaseNeedsUnderscore(fieldDefinition.Name));
 }