Пример #1
0
        public IEnumerable <MetaClass> GetEnumerator()
        {
            List <MetaClass> sortedMembers = new List <MetaClass>();
            int namespaceMembersGroupIndex = 0;

            while (Enum.IsDefined(typeof(NamespaceMembersGroups), namespaceMembersGroupIndex))
            {
                NamespaceMembersGroups namespaceMembersGroup = (NamespaceMembersGroups)namespaceMembersGroupIndex;

                if (GetMembersCount(namespaceMembersGroup) > 0)
                {
                    Dictionary <string, MetaClass> membersGroup = GetMembers(namespaceMembersGroup);

                    foreach (MetaClass member in membersGroup.Values)
                    {
                        sortedMembers.Add(member);
                    }
                }

                namespaceMembersGroupIndex++;
            }

            sortedMembers.Sort(new Comparison <MetaClass>(MembersComparison));

            return(sortedMembers);
        }
Пример #2
0
        public Dictionary <string, MetaClass> GetMembers(NamespaceMembersGroups namespaceMembersGroupType)
        {
            if (!membersGroups.ContainsKey(namespaceMembersGroupType))
            {
                return(null);
            }

            return(membersGroups[namespaceMembersGroupType]);
        }
Пример #3
0
        public int GetMembersCount(NamespaceMembersGroups namespaceMembersGroupType)
        {
            if (!membersGroups.ContainsKey(namespaceMembersGroupType))
            {
                return(0);
            }

            return(membersGroups[namespaceMembersGroupType].Count);
        }
Пример #4
0
        private void AddGenericNameMappingIfNeeded(MyClassInfo myClassInfo, NamespaceMembersGroups namespaceMembersGroupType)
        {
            if (!myClassInfo.Name.Contains("<"))
            {
                return;
            }

            Dictionary <string, string> genericNamesMappingsForGroup = GetGenericNamesMappingsForGroup(namespaceMembersGroupType);
            string xmlName = Utils.ConvertNameToXmlDocForm(myClassInfo.Name);

            genericNamesMappingsForGroup[xmlName] = myClassInfo.Name;
        }
Пример #5
0
        private Dictionary <string, MetaClass> GetMembersGroup(NamespaceMembersGroups namespaceMembersGroupType)
        {
            Dictionary <string, MetaClass> membersGroup;

            if (!membersGroups.ContainsKey(namespaceMembersGroupType))
            {
                membersGroup = new Dictionary <string, MetaClass>();
                membersGroups[namespaceMembersGroupType] = membersGroup;
            }
            else
            {
                membersGroup = membersGroups[namespaceMembersGroupType];
            }

            return(membersGroup);
        }
Пример #6
0
        public bool HasPrivateGroupOfTheSameType(NamespaceMembersGroups membersGroupType)
        {
            switch (membersGroupType)
            {
            case NamespaceMembersGroups.PublicClasses: { return(GetMembersCount(NamespaceMembersGroups.PrivateClasses) > 0); }

            case NamespaceMembersGroups.PublicStructures: { return(GetMembersCount(NamespaceMembersGroups.PrivateStructures) > 0); }

            case NamespaceMembersGroups.PublicInterfaces: { return(GetMembersCount(NamespaceMembersGroups.PrivateInterfaces) > 0); }

            case NamespaceMembersGroups.PublicDelegates: { return(GetMembersCount(NamespaceMembersGroups.PrivateDelegates) > 0); }

            case NamespaceMembersGroups.PublicEnumerations: { return(GetMembersCount(NamespaceMembersGroups.PrivateEnumerations) > 0); }

            default: return(false);
            }
        }
Пример #7
0
        public static bool IsMembersGroupTypePublic(NamespaceMembersGroups membersGroupType)
        {
            switch (membersGroupType)
            {
            case NamespaceMembersGroups.PublicClasses: { return(true); }

            case NamespaceMembersGroups.PublicStructures: { return(true); }

            case NamespaceMembersGroups.PublicInterfaces: { return(true); }

            case NamespaceMembersGroups.PublicDelegates: { return(true); }

            case NamespaceMembersGroups.PublicEnumerations: { return(true); }

            default: { return(false); }
            }
        }
Пример #8
0
        internal IEnumerator <ISummarisableMember> GetEnumerator(NamespaceMembersGroups namespaceMembersGroupType)
        {
            if (!membersGroups.ContainsKey(namespaceMembersGroupType))
            {
                Debug.Assert(false, "Impossible! Couldn't recognize members group ('" + namespaceMembersGroupType + "').");
                yield break;
            }

            Dictionary <string, MetaClass> membersGroup = membersGroups[namespaceMembersGroupType];
            List <string> sortedKeys = new List <string>();

            sortedKeys.AddRange(membersGroup.Keys);

            sortedKeys.Sort();

            foreach (string key in sortedKeys)
            {
                yield return((ISummarisableMember)membersGroup[key]);
            }
        }
Пример #9
0
        private Dictionary <string, string> GetGenericNamesMappingsForGroup(NamespaceMembersGroups namespaceMembersGroupType)
        {
            if (genericNamesMappings == null)
            {
                genericNamesMappings = new Dictionary <NamespaceMembersGroups, Dictionary <string, string> >();
            }

            Dictionary <string, string> genericNamesMappingsForGroup;

            if (!genericNamesMappings.ContainsKey(namespaceMembersGroupType))
            {
                genericNamesMappingsForGroup = new Dictionary <string, string>();
                genericNamesMappings[namespaceMembersGroupType] = genericNamesMappingsForGroup;
            }
            else
            {
                genericNamesMappingsForGroup = genericNamesMappings[namespaceMembersGroupType];
            }

            return(genericNamesMappingsForGroup);
        }
Пример #10
0
        public MyClassInfo FindMember(NamespaceMembersGroups namespaceMembersGroupType, string memberName)
        {
            if (!membersGroups.ContainsKey(namespaceMembersGroupType))
            {
                return(null);
            }

            Dictionary <string, MetaClass> membersGroup = membersGroups[namespaceMembersGroupType];
            MetaClass member = null;

            if (!membersGroup.ContainsKey(memberName))
            {
                // try indirect search (for generic types)
                if (genericNamesMappings == null || !genericNamesMappings.ContainsKey(namespaceMembersGroupType))
                {
                    return(null);
                }

                Dictionary <string, string> genericNamesMappingsForGroup = genericNamesMappings[namespaceMembersGroupType];
                if (!genericNamesMappingsForGroup.ContainsKey(memberName))
                {
                    return(null);
                }

                memberName = genericNamesMappingsForGroup[memberName];

                if (!membersGroup.ContainsKey(memberName))
                {
                    return(null);
                }
            }

            member = membersGroup[memberName];
            Debug.Assert(member is MyClassInfo, "Impossible! All namespace member inherit from MyClassInfo.");

            return((MyClassInfo)member);
        }
Пример #11
0
    private Dictionary<string, string> GetGenericNamesMappingsForGroup(NamespaceMembersGroups namespaceMembersGroupType)
    {
      if (genericNamesMappings == null)
      {
        genericNamesMappings = new Dictionary<NamespaceMembersGroups, Dictionary<string, string>>();
      }

      Dictionary<string, string> genericNamesMappingsForGroup;

      if (!genericNamesMappings.ContainsKey(namespaceMembersGroupType))
      {
        genericNamesMappingsForGroup = new Dictionary<string, string>();
        genericNamesMappings[namespaceMembersGroupType] = genericNamesMappingsForGroup;
      }
      else
      {
        genericNamesMappingsForGroup = genericNamesMappings[namespaceMembersGroupType];
      }

      return genericNamesMappingsForGroup;
    }
Пример #12
0
    private Dictionary<string, MetaClass> GetMembersGroup(NamespaceMembersGroups namespaceMembersGroupType)
    {
      Dictionary<string, MetaClass> membersGroup;

      if (!membersGroups.ContainsKey(namespaceMembersGroupType))
      {
        membersGroup = new Dictionary<string, MetaClass>();
        membersGroups[namespaceMembersGroupType] = membersGroup;
      }
      else
      {
        membersGroup = membersGroups[namespaceMembersGroupType];
      }

      return membersGroup;
    }
Пример #13
0
    public bool HasPrivateGroupOfTheSameType(NamespaceMembersGroups membersGroupType)
    {
      switch (membersGroupType)
      {
        case NamespaceMembersGroups.PublicClasses: { return GetMembersCount(NamespaceMembersGroups.PrivateClasses) > 0; }
        case NamespaceMembersGroups.PublicStructures: { return GetMembersCount(NamespaceMembersGroups.PrivateStructures) > 0; }
        case NamespaceMembersGroups.PublicInterfaces: { return GetMembersCount(NamespaceMembersGroups.PrivateInterfaces) > 0; }
        case NamespaceMembersGroups.PublicDelegates: { return GetMembersCount(NamespaceMembersGroups.PrivateDelegates) > 0; }
        case NamespaceMembersGroups.PublicEnumerations: { return GetMembersCount(NamespaceMembersGroups.PrivateEnumerations) > 0; }

        default: return false;
      }
    }
Пример #14
0
    public static bool IsMembersGroupTypePublic(NamespaceMembersGroups membersGroupType)
    {
      switch (membersGroupType)
      {
        case NamespaceMembersGroups.PublicClasses: { return true; }
        case NamespaceMembersGroups.PublicStructures: { return true; }
        case NamespaceMembersGroups.PublicInterfaces: { return true; }
        case NamespaceMembersGroups.PublicDelegates: { return true; }
        case NamespaceMembersGroups.PublicEnumerations: { return true; }

        default: { return false; }
      }
    }
Пример #15
0
    private void CreateNamespaceMemberMembersIndex(MetaClass namespaceMember, NamespaceMembersGroups namespaceMembersGroupType)
    {
      if (namespaceMembersGroupType == NamespaceMembersGroups.PublicEnumerations || namespaceMembersGroupType == NamespaceMembersGroups.PublicDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalEnumerations || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedEnumerations || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.InternalEnumerations || namespaceMembersGroupType == NamespaceMembersGroups.InternalDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.PrivateEnumerations || namespaceMembersGroupType == NamespaceMembersGroups.PrivateDelegates)
      {
        Debug.Assert(false, String.Format("Impossible! We don't want to create member's index of type '{0}'.", namespaceMember.GetType()));
        return;
      }

      MyClassInfo myClassInfo = (MyClassInfo)namespaceMember;

      string namespaceDirName = GetNamespaceDirName(myClassInfo.Namespace);
      string indexFileName = Utils.CombineMultiplePaths(myClassInfo.AssemblyName + "_" + myClassInfo.AssemblyName.GetHashCode(),
                                                        namespaceDirName,
                                                        "MS_" + myClassInfo.Name + "_" + myClassInfo.Name.GetHashCode() + ".html");

	  string filename = Utils.CombineMultiplePaths(outputDirectory, CONTENTS_DIRECTORY, GetAliasName(indexFileName));			
			
      FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
      StreamWriter sw = new StreamWriter(fs);

      string memberTypeName = "";
      switch (namespaceMembersGroupType)
      {
        case NamespaceMembersGroups.PublicClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.PublicInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.PublicStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.ProtectedInternalClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.ProtectedInternalInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.ProtectedInternalStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.ProtectedClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.ProtectedInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.ProtectedStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.InternalClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.InternalInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.InternalStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.PrivateClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.PrivateInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.PrivateStructures: memberTypeName = "Structure"; break;

        default: Debug.Assert(false, "Impossible! Couldn't obtain member's type name."); break;
      }
      string pageTitle = String.Format("{0} {1} Members", Utils.HTMLEncode(myClassInfo.Name.Replace('/', '.')), memberTypeName);

      string[] sectionsShortcutsNamesAndIndices = ObtainListOfMembersSectionsShortcutsNamesAndIndices(myClassInfo);
      string[] sectionsNames = ObtainListOfMembersSectionsNames(myClassInfo);

      WriteIndexHeader(sw, pageTitle, sectionsShortcutsNamesAndIndices);

      WriteIndexSummary(sw, myClassInfo.Summary);

      WriteIndexItemLocation(sw,
                             myClassInfo.DisplayableName,
                             myClassInfo.Namespace,
                             myClassInfo.AssemblyName,
                             ResolveNamespaceMemberLink(myClassInfo.AssemblyName, myClassInfo.Namespace, myClassInfo.Name),
                             ResolveNamespaceLink(myClassInfo.AssemblyName, myClassInfo.Namespace),
                             ResolveAssemblyLink(myClassInfo.AssemblyName));

      int sectionIndex = 0;
      int sectionNameIndex = 0;
      int classMembersGroupTypeIndex = 0;

      while (Enum.IsDefined(typeof(ClassMembersGroups), classMembersGroupTypeIndex))
      {
        ClassMembersGroups classMembersGroupType = (ClassMembersGroups)classMembersGroupTypeIndex;

        if (myClassInfo.GetMembersCount(classMembersGroupType) > 0)
        {
          WriteMembersIndex(sw, sectionsNames[sectionNameIndex++], sectionIndex,
                            myClassInfo.GetEnumerator(classMembersGroupType),
                            DEFAULT_MEMBERS_COLUMNS_NAMES,
                            TYPE_MEMBERS_COLUMNS_WIDTHS,
                            0, classMembersGroupType);
        }

        classMembersGroupTypeIndex++;
        sectionIndex++;
      }

      WriteIndexFooter(sw);

      sw.Close();
      fs.Close();
    }
Пример #16
0
    private void WriteMembersIndex(StreamWriter sw, string sectionHeader, int sectionIndex, IEnumerator<ISummarisableMember> members, string[] columnsNames, int[] columnsWidthsPercentages, NamespaceMembersGroups namespaceMembersGroupsType, ClassMembersGroups classMembersGroupsType, bool dontResolveLinks)
    {
      WriteIndexSectionBegin(sw, sectionHeader, sectionIndex);

      WriteIndexMembersTableBegin(sw, columnsNames, columnsWidthsPercentages);

      while (members.MoveNext())
      {
        ISummarisableMember member = members.Current;

        string summary = member.Summary;
        string memberName = Utils.HTMLEncode(member.DisplayableName);
        string link = null;

        if (!dontResolveLinks)
        {
          link = ResolveLink((MetaClass)member);
        }

        IconsTypes iconsTypes = GetIconsTypes(member, namespaceMembersGroupsType, classMembersGroupsType);

        WriteIndexMembersTableRow(sw,
                                  memberName,
                                  link,
                                  summary,
                                  Icons.GetFileNames(iconsTypes),
                                  Icons.GetAltLabels(iconsTypes));
      }

      WriteIndexMembersTableEnd(sw);

      WriteIndexSectionEnd(sw);
    }
Пример #17
0
    private void ProcessNamespaceMemberMembers(MyClassInfo namespaceMember, NamespaceMembersGroups namespaceMembersGroupType)
    {
      switch (namespaceMembersGroupType)
      {
        case NamespaceMembersGroups.PublicClasses: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.PublicStructures: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.PublicInterfaces: { ProcessInterfaceMembers((MyInterfaceInfo)namespaceMember); break; }
        case NamespaceMembersGroups.PublicDelegates: { break; }
        case NamespaceMembersGroups.PublicEnumerations: { ProcessEnumerationMembers((MyEnumerationInfo)namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedInternalClasses: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedInternalStructures: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedInternalInterfaces: { ProcessInterfaceMembers((MyInterfaceInfo)namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedInternalDelegates: { break; }
        case NamespaceMembersGroups.ProtectedInternalEnumerations: { ProcessEnumerationMembers((MyEnumerationInfo)namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedClasses: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedStructures: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedInterfaces: { ProcessInterfaceMembers((MyInterfaceInfo)namespaceMember); break; }
        case NamespaceMembersGroups.ProtectedDelegates: { break; }
        case NamespaceMembersGroups.ProtectedEnumerations: { ProcessEnumerationMembers((MyEnumerationInfo)namespaceMember); break; }
        case NamespaceMembersGroups.InternalClasses: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.InternalStructures: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.InternalInterfaces: { ProcessInterfaceMembers((MyInterfaceInfo)namespaceMember); break; }
        case NamespaceMembersGroups.InternalDelegates: { break; }
        case NamespaceMembersGroups.InternalEnumerations: { ProcessEnumerationMembers((MyEnumerationInfo)namespaceMember); break; }
        case NamespaceMembersGroups.PrivateClasses: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.PrivateStructures: { ProcessClassOrStructureMembers(namespaceMember); break; }
        case NamespaceMembersGroups.PrivateInterfaces: { ProcessInterfaceMembers((MyInterfaceInfo)namespaceMember); break; }
        case NamespaceMembersGroups.PrivateDelegates: { break; }
        case NamespaceMembersGroups.PrivateEnumerations: { ProcessEnumerationMembers((MyEnumerationInfo)namespaceMember); break; }

        default: { Debug.Assert(false, "Impossible! Couldn't recognize type of namespace member."); break; }
      }
    }
Пример #18
0
        internal MyClassInfo FindNamespaceMember(string assemblyName, string namezpace, NamespaceMembersGroups namespaceMemberGroupType, string memberName)
        {
            MyNamespaceInfo myNamespaceInfo = FindNamespace(assemblyName, namezpace);

            if (myNamespaceInfo == null)
            {
                return null;
            }

            return myNamespaceInfo.FindMember(namespaceMemberGroupType, memberName);
        }
Пример #19
0
        public static IconsTypes GetIconType(NamespaceMembersGroups namespaceMembersGroupType)
        {
            switch (namespaceMembersGroupType)
            {
                case NamespaceMembersGroups.PublicClasses: return IconsTypes.PublicClass;
                case NamespaceMembersGroups.PublicStructures: return IconsTypes.PublicStructure;
                case NamespaceMembersGroups.PublicInterfaces: return IconsTypes.PublicInterface;
                case NamespaceMembersGroups.PublicEnumerations: return IconsTypes.PublicEnumeration;
                case NamespaceMembersGroups.PublicDelegates: return IconsTypes.PublicDelegate;
                case NamespaceMembersGroups.ProtectedInternalClasses: return IconsTypes.ProtectedInternalClass;
                case NamespaceMembersGroups.ProtectedInternalStructures: return IconsTypes.ProtectedInternalStructure;
                case NamespaceMembersGroups.ProtectedInternalInterfaces: return IconsTypes.ProtectedInternalInterface;
                case NamespaceMembersGroups.ProtectedInternalEnumerations: return IconsTypes.ProtectedInternalEnumeration;
                case NamespaceMembersGroups.ProtectedInternalDelegates: return IconsTypes.ProtectedInternalDelegate;
                case NamespaceMembersGroups.ProtectedClasses: return IconsTypes.ProtectedClass;
                case NamespaceMembersGroups.ProtectedStructures: return IconsTypes.ProtectedStructure;
                case NamespaceMembersGroups.ProtectedInterfaces: return IconsTypes.ProtectedInterface;
                case NamespaceMembersGroups.ProtectedEnumerations: return IconsTypes.ProtectedEnumeration;
                case NamespaceMembersGroups.ProtectedDelegates: return IconsTypes.ProtectedDelegate;
                case NamespaceMembersGroups.InternalClasses: return IconsTypes.InternalClass;
                case NamespaceMembersGroups.InternalStructures: return IconsTypes.InternalStructure;
                case NamespaceMembersGroups.InternalInterfaces: return IconsTypes.InternalInterface;
                case NamespaceMembersGroups.InternalEnumerations: return IconsTypes.InternalEnumeration;
                case NamespaceMembersGroups.InternalDelegates: return IconsTypes.InternalDelegate;
                case NamespaceMembersGroups.PrivateClasses: return IconsTypes.PrivateClass;
                case NamespaceMembersGroups.PrivateStructures: return IconsTypes.PrivateStructure;
                case NamespaceMembersGroups.PrivateInterfaces: return IconsTypes.PrivateInterface;
                case NamespaceMembersGroups.PrivateEnumerations: return IconsTypes.PrivateEnumeration;
                case NamespaceMembersGroups.PrivateDelegates: return IconsTypes.PrivateDelegate;

                default:
                {
                    Debug.Assert(false, "Impossible! Couldn't return correct type of icon.");

                    return (IconsTypes)0;
                }
            }
        }
Пример #20
0
    private void AddGenericNameMappingIfNeeded(MyClassInfo myClassInfo, NamespaceMembersGroups namespaceMembersGroupType)
    {
      if (!myClassInfo.Name.Contains("<"))
      {
        return;
      }

      Dictionary<string, string> genericNamesMappingsForGroup = GetGenericNamesMappingsForGroup(namespaceMembersGroupType);
      string xmlName = Utils.ConvertNameToXmlDocForm(myClassInfo.Name);

      genericNamesMappingsForGroup[xmlName] = myClassInfo.Name;
    }
Пример #21
0
        public static string GetBaseGroupName(NamespaceMembersGroups membersGroupType)
        {
            switch (membersGroupType)
            {
            case NamespaceMembersGroups.PublicClasses: { return("Classes"); }

            case NamespaceMembersGroups.PublicStructures: { return("Structures"); }

            case NamespaceMembersGroups.PublicInterfaces: { return("Interfaces"); }

            case NamespaceMembersGroups.PublicDelegates: { return("Delegates"); }

            case NamespaceMembersGroups.PublicEnumerations: { return("Enumerations"); }

            case NamespaceMembersGroups.ProtectedInternalClasses: { return("Classes"); }

            case NamespaceMembersGroups.ProtectedInternalStructures: { return("Structures"); }

            case NamespaceMembersGroups.ProtectedInternalInterfaces: { return("Interfaces"); }

            case NamespaceMembersGroups.ProtectedInternalDelegates: { return("Delegates"); }

            case NamespaceMembersGroups.ProtectedInternalEnumerations: { return("Enumerations"); }

            case NamespaceMembersGroups.ProtectedClasses: { return("Classes"); }

            case NamespaceMembersGroups.ProtectedStructures: { return("Structures"); }

            case NamespaceMembersGroups.ProtectedInterfaces: { return("Interfaces"); }

            case NamespaceMembersGroups.ProtectedDelegates: { return("Delegates"); }

            case NamespaceMembersGroups.ProtectedEnumerations: { return("Enumerations"); }

            case NamespaceMembersGroups.InternalClasses: { return("Classes"); }

            case NamespaceMembersGroups.InternalStructures: { return("Structures"); }

            case NamespaceMembersGroups.InternalInterfaces: { return("Interfaces"); }

            case NamespaceMembersGroups.InternalDelegates: { return("Delegates"); }

            case NamespaceMembersGroups.InternalEnumerations: { return("Enumerations"); }

            case NamespaceMembersGroups.PrivateClasses: { return("Classes"); }

            case NamespaceMembersGroups.PrivateStructures: { return("Structures"); }

            case NamespaceMembersGroups.PrivateInterfaces: { return("Interfaces"); }

            case NamespaceMembersGroups.PrivateDelegates: { return("Delegates"); }

            case NamespaceMembersGroups.PrivateEnumerations: { return("Enumerations"); }

            default:
            {
                Debug.Assert(false, "Impossible! Couldn't recognize type of a namespace member.");

                return(null);
            }
            }
        }
Пример #22
0
    internal IEnumerator<ISummarisableMember> GetEnumerator(NamespaceMembersGroups namespaceMembersGroupType)
    {
      if (!membersGroups.ContainsKey(namespaceMembersGroupType))
      {
        Debug.Assert(false, "Impossible! Couldn't recognize members group ('" + namespaceMembersGroupType + "').");
        yield break;
      }

      Dictionary<string, MetaClass> membersGroup = membersGroups[namespaceMembersGroupType];
      List<string> sortedKeys = new List<string>();

      sortedKeys.AddRange(membersGroup.Keys);

      sortedKeys.Sort();

      foreach (string key in sortedKeys)
      {
        yield return (ISummarisableMember)membersGroup[key];
      }
    }
Пример #23
0
        public static IconsTypes GetIconType(NamespaceMembersGroups namespaceMembersGroupType)
        {
            switch (namespaceMembersGroupType)
            {
            case NamespaceMembersGroups.PublicClasses: return(IconsTypes.PublicClass);

            case NamespaceMembersGroups.PublicStructures: return(IconsTypes.PublicStructure);

            case NamespaceMembersGroups.PublicInterfaces: return(IconsTypes.PublicInterface);

            case NamespaceMembersGroups.PublicEnumerations: return(IconsTypes.PublicEnumeration);

            case NamespaceMembersGroups.PublicDelegates: return(IconsTypes.PublicDelegate);

            case NamespaceMembersGroups.ProtectedInternalClasses: return(IconsTypes.ProtectedInternalClass);

            case NamespaceMembersGroups.ProtectedInternalStructures: return(IconsTypes.ProtectedInternalStructure);

            case NamespaceMembersGroups.ProtectedInternalInterfaces: return(IconsTypes.ProtectedInternalInterface);

            case NamespaceMembersGroups.ProtectedInternalEnumerations: return(IconsTypes.ProtectedInternalEnumeration);

            case NamespaceMembersGroups.ProtectedInternalDelegates: return(IconsTypes.ProtectedInternalDelegate);

            case NamespaceMembersGroups.ProtectedClasses: return(IconsTypes.ProtectedClass);

            case NamespaceMembersGroups.ProtectedStructures: return(IconsTypes.ProtectedStructure);

            case NamespaceMembersGroups.ProtectedInterfaces: return(IconsTypes.ProtectedInterface);

            case NamespaceMembersGroups.ProtectedEnumerations: return(IconsTypes.ProtectedEnumeration);

            case NamespaceMembersGroups.ProtectedDelegates: return(IconsTypes.ProtectedDelegate);

            case NamespaceMembersGroups.InternalClasses: return(IconsTypes.InternalClass);

            case NamespaceMembersGroups.InternalStructures: return(IconsTypes.InternalStructure);

            case NamespaceMembersGroups.InternalInterfaces: return(IconsTypes.InternalInterface);

            case NamespaceMembersGroups.InternalEnumerations: return(IconsTypes.InternalEnumeration);

            case NamespaceMembersGroups.InternalDelegates: return(IconsTypes.InternalDelegate);

            case NamespaceMembersGroups.PrivateClasses: return(IconsTypes.PrivateClass);

            case NamespaceMembersGroups.PrivateStructures: return(IconsTypes.PrivateStructure);

            case NamespaceMembersGroups.PrivateInterfaces: return(IconsTypes.PrivateInterface);

            case NamespaceMembersGroups.PrivateEnumerations: return(IconsTypes.PrivateEnumeration);

            case NamespaceMembersGroups.PrivateDelegates: return(IconsTypes.PrivateDelegate);

            default:
            {
                Debug.Assert(false, "Impossible! Couldn't return correct type of icon.");

                return((IconsTypes)0);
            }
            }
        }
Пример #24
0
        private MyClassInfo FindGlobalNamespaceMember(string xmlMemberId)
        {
            int indexOfDot = -1;

            while (true)
            {
                string potentialNamespace;
                string potentialMemberName;

                indexOfDot = xmlMemberId.IndexOf('.', indexOfDot + 1);
                if (indexOfDot == -1)
                {
                    potentialNamespace = MyNamespaceInfo.GLOBAL_NAMESPACE_NAME;
                }
                else
                {
                    potentialNamespace = xmlMemberId.Substring(0, indexOfDot);
                }

                List <MyNamespaceInfo> namespacesInfos = assembliesInfo.FindNamespaces(potentialNamespace);
                if (namespacesInfos.Count == 0)
                {
                    if (indexOfDot == -1)
                    {
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }

                if (indexOfDot + 1 < xmlMemberId.Length)
                {
                    potentialMemberName = xmlMemberId.Substring(indexOfDot + 1).Replace('.', '/');
                }
                else
                {
                    Logger.Warning("(XML) Malformed member ID: '{0}'.", xmlMemberId);
                    continue;
                }

                foreach (MyNamespaceInfo myNamespaceInfo in namespacesInfos)
                {
                    int namespaceMembersGroupTypeIndex = 0;
                    while (Enum.IsDefined(typeof(NamespaceMembersGroups), namespaceMembersGroupTypeIndex))
                    {
                        NamespaceMembersGroups namespaceMembersGroupType = (NamespaceMembersGroups)namespaceMembersGroupTypeIndex;
                        MyClassInfo            namespaceMember           = myNamespaceInfo.FindMember(namespaceMembersGroupType, potentialMemberName);

                        if (namespaceMember != null)
                        {
                            return(namespaceMember);
                        }

                        namespaceMembersGroupTypeIndex++;
                    }
                }

                if (indexOfDot == -1)
                {
                    break;
                }
            }

            return(null);
        }
Пример #25
0
    public MyClassInfo FindMember(NamespaceMembersGroups namespaceMembersGroupType, string memberName)
    {
      if (!membersGroups.ContainsKey(namespaceMembersGroupType))
      {
        return null;
      }

      Dictionary<string, MetaClass> membersGroup = membersGroups[namespaceMembersGroupType];
      MetaClass member = null;

      if (!membersGroup.ContainsKey(memberName))
      {
        // try indirect search (for generic types)
        if (genericNamesMappings == null || !genericNamesMappings.ContainsKey(namespaceMembersGroupType))
        {
          return null;
        }

        Dictionary<string, string> genericNamesMappingsForGroup = genericNamesMappings[namespaceMembersGroupType];
        if (!genericNamesMappingsForGroup.ContainsKey(memberName))
        {
          return null;
        }

        memberName = genericNamesMappingsForGroup[memberName];

        if (!membersGroup.ContainsKey(memberName))
        {
          return null;
        }
      }

      member = membersGroup[memberName];
      Debug.Assert(member is MyClassInfo, "Impossible! All namespace member inherit from MyClassInfo.");

      return (MyClassInfo)member;
    }
Пример #26
0
        internal MyClassInfo FindNamespaceMember(string assemblyName, string namezpace, NamespaceMembersGroups namespaceMemberGroupType, string memberName)
        {
            MyNamespaceInfo myNamespaceInfo = FindNamespace(assemblyName, namezpace);

            if (myNamespaceInfo == null)
            {
                return(null);
            }

            return(myNamespaceInfo.FindMember(namespaceMemberGroupType, memberName));
        }
Пример #27
0
    public int GetMembersCount(NamespaceMembersGroups namespaceMembersGroupType)
    {
      if (!membersGroups.ContainsKey(namespaceMembersGroupType))
      {
        return 0;
      }

      return membersGroups[namespaceMembersGroupType].Count;
    }
Пример #28
0
 private void WriteMembersIndex(StreamWriter sw, string sectionHeader, int sectionIndex, IEnumerator<ISummarisableMember> members, string[] columnsNames, int[] columnsWidthsPercentages, NamespaceMembersGroups namespaceMembersGroupsType, ClassMembersGroups classMembersGroupsType)
 {
   WriteMembersIndex(sw, sectionHeader, sectionIndex, members, columnsNames, columnsWidthsPercentages, namespaceMembersGroupsType, classMembersGroupsType, false);
 }
Пример #29
0
    public Dictionary<string, MetaClass> GetMembers(NamespaceMembersGroups namespaceMembersGroupType)
    {
      if (!membersGroups.ContainsKey(namespaceMembersGroupType))
      {
        return null;
      }

      return membersGroups[namespaceMembersGroupType];
    }
Пример #30
0
    private IconsTypes GetIconsTypes(ISummarisableMember member, NamespaceMembersGroups namespaceMembersGroupType, ClassMembersGroups classMembersGroupType)
    {
      if (member is MyAssemblyInfo) { return IconsTypes.Assembly; }
      else if (member is MyNamespaceInfo) { return IconsTypes.Namespace; }
      else if (member is MyClassInfo)
      {
        MyClassInfo myClassInfo = (MyClassInfo)member;
        IconsTypes iconsTypes = Icons.GetIconType(namespaceMembersGroupType);

        if (myClassInfo.IsAbstract && !myClassInfo.IsSealed) { iconsTypes |= IconsTypes.Abstract; }
        if (myClassInfo.IsStatic) { iconsTypes |= IconsTypes.Static; }

        if (myClassInfo is MyInterfaceInfo) { iconsTypes &= ~IconsTypes.Abstract; }

        return iconsTypes;
      }
      else if (member is MyInvokableMembersOverloadsInfo)
      {
        MyInvokableMembersOverloadsInfo myInvokableMembersOverloadsInfo = (MyInvokableMembersOverloadsInfo)member;
        MyInvokableMemberInfo myInvokableMemberInfo = null;

        foreach (MyInvokableMemberInfo tmpMyInvokableMemberInfo in myInvokableMembersOverloadsInfo)
        {
          myInvokableMemberInfo = tmpMyInvokableMemberInfo;

          break;
        }

        if (myInvokableMemberInfo == null)
        {
          Debug.Assert(false, "Impossible! There should be at least one overload.");
        }

        return GetIconsTypes(myInvokableMemberInfo, namespaceMembersGroupType, classMembersGroupType);
      }
      else if (member is MyPropertiesOverloadsInfo)
      {
        MyPropertiesOverloadsInfo myPropertiesOverloadsInfo = (MyPropertiesOverloadsInfo)member;
        MyPropertyInfo myPropertyInfo = null;

        foreach (MyPropertyInfo tmpMyPropertyInfo in myPropertiesOverloadsInfo)
        {
          myPropertyInfo = tmpMyPropertyInfo;

          break;
        }

        if (myPropertyInfo == null)
        {
          Debug.Assert(false, "Impossible! There should be at least one overload.");
        }

        return GetIconsTypes(myPropertyInfo, namespaceMembersGroupType, classMembersGroupType);
      }
      else if (member is MyInvokableMemberInfo)
      {
        MyInvokableMemberInfo myInvokableMemberInfo = (MyInvokableMemberInfo)member;
        IconsTypes iconsTypes = IconsTypes.None;

        if (myInvokableMemberInfo.IsPublic) { iconsTypes = IconsTypes.PublicMethod; }
        else if (myInvokableMemberInfo.IsProtectedInternal) { iconsTypes = IconsTypes.ProtectedInternalMethod; }
        else if (myInvokableMemberInfo.IsProtected) { iconsTypes = IconsTypes.ProtectedMethod; }
        else if (myInvokableMemberInfo.IsInternal) { iconsTypes = IconsTypes.InternalMethod; }
        else if (myInvokableMemberInfo.IsPrivate) { iconsTypes = IconsTypes.PrivateMethod; }

        if (myInvokableMemberInfo.IsStatic) { iconsTypes |= IconsTypes.Static; }
        if (myInvokableMemberInfo.IsAbstract) { iconsTypes |= IconsTypes.Abstract; }
        if (myInvokableMemberInfo.IsVirtual && !myInvokableMemberInfo.IsAbstract) { iconsTypes |= IconsTypes.Virtual; }
        if (myInvokableMemberInfo.IsOverride && !myInvokableMemberInfo.IsSealed) { iconsTypes |= IconsTypes.Virtual; }

        return iconsTypes;
      }
      else if (member is MyFieldInfo)
      {
        if (namespaceMembersGroupType == NamespaceMembersGroups.PublicEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.InternalEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.PrivateEnumerations)
        {
          IconsTypes iconsTypes = IconsTypes.EnumField;

          return iconsTypes;
        }
        else
        {
          MyFieldInfo myFieldInfo = (MyFieldInfo)member;
          IconsTypes iconsTypes = Icons.GetIconType(classMembersGroupType);

          if (myFieldInfo.IsStatic) { iconsTypes |= IconsTypes.Static; }
          if (myFieldInfo.IsConst) { iconsTypes |= IconsTypes.Static; }

          return iconsTypes;
        }
      }
      else if (member is MyPropertyInfo)
      {
        MyPropertyInfo myPropertyInfo = (MyPropertyInfo)member;
        IconsTypes iconsTypes = Icons.GetIconType(classMembersGroupType);

        if (myPropertyInfo.IsStatic) { iconsTypes |= IconsTypes.Static; }
        if (myPropertyInfo.IsAbstract) { iconsTypes |= IconsTypes.Abstract; }
        if (myPropertyInfo.IsVirtual && !myPropertyInfo.IsAbstract) { iconsTypes |= IconsTypes.Virtual; }

        return iconsTypes;
      }
      else if (member is MyEventInfo)
      {
        MyEventInfo myEventInfo = (MyEventInfo)member;
        IconsTypes iconsTypes = Icons.GetIconType(classMembersGroupType);

        if (myEventInfo.IsStatic) { iconsTypes |= IconsTypes.Static; }
        if (myEventInfo.IsAbstract) { iconsTypes |= IconsTypes.Abstract; }
        if (myEventInfo.IsVirtual && !myEventInfo.IsAbstract) { iconsTypes |= IconsTypes.Virtual; }

        return iconsTypes;
      }
      else if (member is MyNestedTypeInfo)
      {
        MyNestedTypeInfo myNestedTypeInfo = (MyNestedTypeInfo)member;
        IconsTypes iconsTypes = Icons.GetIconType(classMembersGroupType);

        if (myNestedTypeInfo.IsAbstract && !myNestedTypeInfo.IsSealed) { iconsTypes |= IconsTypes.Abstract; }
        if (myNestedTypeInfo.IsStatic) { iconsTypes |= IconsTypes.Static; }

        if (myNestedTypeInfo.MetaType == NestedTypes.Interface) { iconsTypes &= ~IconsTypes.Abstract; }

        return iconsTypes;
      }
      else
      {
        Debug.Assert(false, "Impossible! Can't find icon for type " + member.GetType() + ".");
      }

      return IconsTypes.None;
    }
Пример #31
0
    public static string GetBaseGroupName(NamespaceMembersGroups membersGroupType)
    {
      switch (membersGroupType)
      {
        case NamespaceMembersGroups.PublicClasses: { return "Classes"; }
        case NamespaceMembersGroups.PublicStructures: { return "Structures"; }
        case NamespaceMembersGroups.PublicInterfaces: { return "Interfaces"; }
        case NamespaceMembersGroups.PublicDelegates: { return "Delegates"; }
        case NamespaceMembersGroups.PublicEnumerations: { return "Enumerations"; }
        case NamespaceMembersGroups.ProtectedInternalClasses: { return "Classes"; }
        case NamespaceMembersGroups.ProtectedInternalStructures: { return "Structures"; }
        case NamespaceMembersGroups.ProtectedInternalInterfaces: { return "Interfaces"; }
        case NamespaceMembersGroups.ProtectedInternalDelegates: { return "Delegates"; }
        case NamespaceMembersGroups.ProtectedInternalEnumerations: { return "Enumerations"; }
        case NamespaceMembersGroups.ProtectedClasses: { return "Classes"; }
        case NamespaceMembersGroups.ProtectedStructures: { return "Structures"; }
        case NamespaceMembersGroups.ProtectedInterfaces: { return "Interfaces"; }
        case NamespaceMembersGroups.ProtectedDelegates: { return "Delegates"; }
        case NamespaceMembersGroups.ProtectedEnumerations: { return "Enumerations"; }
        case NamespaceMembersGroups.InternalClasses: { return "Classes"; }
        case NamespaceMembersGroups.InternalStructures: { return "Structures"; }
        case NamespaceMembersGroups.InternalInterfaces: { return "Interfaces"; }
        case NamespaceMembersGroups.InternalDelegates: { return "Delegates"; }
        case NamespaceMembersGroups.InternalEnumerations: { return "Enumerations"; }
        case NamespaceMembersGroups.PrivateClasses: { return "Classes"; }
        case NamespaceMembersGroups.PrivateStructures: { return "Structures"; }
        case NamespaceMembersGroups.PrivateInterfaces: { return "Interfaces"; }
        case NamespaceMembersGroups.PrivateDelegates: { return "Delegates"; }
        case NamespaceMembersGroups.PrivateEnumerations: { return "Enumerations"; }

        default:
          {
            Debug.Assert(false, "Impossible! Couldn't recognize type of a namespace member.");

            return null;
          }
      }
    }
Пример #32
0
    private void ProcessNamespaceMember(MetaClass namespaceMember, NamespaceMembersGroups namespaceMembersGroupType)
    {
      MyClassInfo myClassInfo = (MyClassInfo)namespaceMember;

      string namespaceDirName = GetNamespaceDirName(myClassInfo.Namespace);
      string indexFileName = Utils.CombineMultiplePaths(myClassInfo.AssemblyName + "_" + myClassInfo.AssemblyName.GetHashCode(),
                                                        namespaceDirName,
                                                        "SM_" + myClassInfo.Name + "_" + myClassInfo.Name.GetHashCode() + ".html");

	  string filename = Utils.CombineMultiplePaths(outputDirectory, CONTENTS_DIRECTORY, GetAliasName(indexFileName));			
			
      FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
      StreamWriter sw = new StreamWriter(fs);

      string memberTypeName = "";
      switch (namespaceMembersGroupType)
      {
        case NamespaceMembersGroups.PublicClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.PublicDelegates: memberTypeName = "Delegate"; break;
        case NamespaceMembersGroups.PublicEnumerations: memberTypeName = "Enumeration"; break;
        case NamespaceMembersGroups.PublicInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.PublicStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.ProtectedInternalClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.ProtectedInternalDelegates: memberTypeName = "Delegate"; break;
        case NamespaceMembersGroups.ProtectedInternalEnumerations: memberTypeName = "Enumeration"; break;
        case NamespaceMembersGroups.ProtectedInternalInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.ProtectedInternalStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.ProtectedClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.ProtectedDelegates: memberTypeName = "Delegate"; break;
        case NamespaceMembersGroups.ProtectedEnumerations: memberTypeName = "Enumeration"; break;
        case NamespaceMembersGroups.ProtectedInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.ProtectedStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.InternalClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.InternalDelegates: memberTypeName = "Delegate"; break;
        case NamespaceMembersGroups.InternalEnumerations: memberTypeName = "Enumeration"; break;
        case NamespaceMembersGroups.InternalInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.InternalStructures: memberTypeName = "Structure"; break;
        case NamespaceMembersGroups.PrivateClasses: memberTypeName = "Class"; break;
        case NamespaceMembersGroups.PrivateDelegates: memberTypeName = "Delegate"; break;
        case NamespaceMembersGroups.PrivateEnumerations: memberTypeName = "Enumeration"; break;
        case NamespaceMembersGroups.PrivateInterfaces: memberTypeName = "Interface"; break;
        case NamespaceMembersGroups.PrivateStructures: memberTypeName = "Structure"; break;

        default: Debug.Assert(false, "Impossible! Couldn't obtain member's type name."); break;
      }
      string pageTitle = String.Format("{0} {1}", Utils.HTMLEncode(myClassInfo.Name.Replace('/', '.')), memberTypeName);

      List<string> sectionsNames = new List<string>();

      sectionsNames.Add("Syntax");

      if (namespaceMember.Remarks != "")
      {
        sectionsNames.Add("Remarks");
      }

      if (namespaceMembersGroupType != NamespaceMembersGroups.PublicDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.ProtectedInternalDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.ProtectedDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.InternalDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.PrivateDelegates)
      {
        sectionsNames.Add("Members");
      }

      if (myClassInfo.Example != "")
      {
        sectionsNames.Add("Example");
      }

      string[] sectionsNamesAndIndices = new string[sectionsNames.Count];
      for (int i = 0; i < sectionsNamesAndIndices.Length; i++)
      {
        sectionsNamesAndIndices[i] = sectionsNames[i] + ":" + i;
      }

      WriteIndexHeader(sw, pageTitle, sectionsNamesAndIndices);

      WriteIndexSummary(sw, myClassInfo.Summary);

      string declaringTypeLink = null;
      string declaringTypeName = GetDeclaringTypeNameOfANestedType(myClassInfo);

      if (declaringTypeName != null)
      {
        declaringTypeLink = ResolveNamespaceMemberLink(myClassInfo.AssemblyName, myClassInfo.Namespace, declaringTypeName);
        declaringTypeName = declaringTypeName.Replace('/', '.');
      }

      WriteIndexItemLocation(sw,
                             declaringTypeName,
                             myClassInfo.Namespace,
                             myClassInfo.AssemblyName,
                             declaringTypeLink,
                             ResolveNamespaceLink(myClassInfo.AssemblyName, myClassInfo.Namespace),
                             ResolveAssemblyLink(myClassInfo.AssemblyName));

      int sectionIndex = 0;

      WriteIndexSectionBegin(sw, sectionsNames[sectionIndex], sectionIndex);
      string syntax = CreateNamespaceMemberSyntaxString((MyClassInfo)namespaceMember);
      WriteIndexCodeBlockTable(sw, DEFAULT_LANGUAGE, syntax);

      if (myClassInfo.GenericParametersCount > 0)
      {
        WriteGenericParametersDescriptions(sw, myClassInfo.GenericParameters);
      }

      if (namespaceMembersGroupType == NamespaceMembersGroups.PublicDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.InternalDelegates
       || namespaceMembersGroupType == NamespaceMembersGroups.PrivateDelegates)
      {
        MyDelegateInfo myDelegateInfo = (MyDelegateInfo)myClassInfo;
        WriteParametersAndReturnValueDescriptions(sw, myDelegateInfo.ParametersNames, myDelegateInfo.Parameters,
                                                  myDelegateInfo.ReturnTypeFullName, myDelegateInfo.ReturnValueSummary, false);
      }

      WriteIndexSectionEnd(sw);
      sectionIndex++;

      if (namespaceMember.Remarks != "")
      {
        WriteIndexSectionBegin(sw, sectionsNames[sectionIndex], sectionIndex);
        WriteIndexRemarks(sw, namespaceMember.Remarks);
        WriteIndexSectionEnd(sw);
        sectionIndex++;
      }

      if (namespaceMembersGroupType != NamespaceMembersGroups.PublicDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.ProtectedInternalDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.ProtectedDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.InternalDelegates
       && namespaceMembersGroupType != NamespaceMembersGroups.PrivateDelegates)
      {
        if (namespaceMembersGroupType == NamespaceMembersGroups.PublicEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.InternalEnumerations
         || namespaceMembersGroupType == NamespaceMembersGroups.PrivateEnumerations)
        {
          if (myClassInfo.GetMembersCount(ClassMembersGroups.PublicFields) == 0)
          {
            WriteIndexSectionBegin(sw, sectionsNames[sectionIndex], sectionIndex);
            WriteIndexText(sw, NO_MEMBERS);
            WriteIndexSectionEnd(sw);

            sectionIndex++;
          }
          else
          {
            WriteMembersIndex(sw, "Members",
                              sectionIndex,
                              myClassInfo.GetEnumerator(ClassMembersGroups.PublicFields),
                              ENUM_MEMBERS_COLUMNS_NAMES,
                              DEFAULT_MEMBERS_COLUMNS_WIDTHS,
                              namespaceMembersGroupType, 0);

            sectionIndex++;
          }
        }
        else // Classes, Structures and Interfaces
        {
          Debug.Assert(namespaceMembersGroupType == NamespaceMembersGroups.PublicClasses || namespaceMembersGroupType == NamespaceMembersGroups.PublicInterfaces || namespaceMembersGroupType == NamespaceMembersGroups.PublicStructures
                    || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalClasses || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalInterfaces || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInternalStructures
                    || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedClasses || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedInterfaces || namespaceMembersGroupType == NamespaceMembersGroups.ProtectedStructures
                    || namespaceMembersGroupType == NamespaceMembersGroups.InternalClasses || namespaceMembersGroupType == NamespaceMembersGroups.InternalInterfaces || namespaceMembersGroupType == NamespaceMembersGroups.InternalStructures
                    || namespaceMembersGroupType == NamespaceMembersGroups.PrivateClasses || namespaceMembersGroupType == NamespaceMembersGroups.PrivateInterfaces || namespaceMembersGroupType == NamespaceMembersGroups.PrivateStructures,
                       "Impossible! It must've been a class, a structure, an interface or an enumeration.");

          WriteIndexSectionBegin(sw, sectionsNames[sectionIndex], sectionIndex);
          sectionIndex++;

          if (myClassInfo.HasMembers)
          {
            string href = Utils.CombineMultiplePaths(myClassInfo.AssemblyName + "_" + myClassInfo.AssemblyName.GetHashCode(),
                                                     namespaceDirName,
                                                     "MS_" + myClassInfo.Name + "_" + myClassInfo.Name.GetHashCode() + ".html");

            sw.WriteLine("<p>Click <a href=\"{0}\">here</a> to see the list of members.</p>",
                         GetAliasName(href, true, true));
          }
          else
          {
            WriteIndexText(sw, NO_MEMBERS);
          }

          CreateNamespaceMemberMembersIndex(namespaceMember, namespaceMembersGroupType);

          WriteIndexSectionEnd(sw);
        }
      }

      if (myClassInfo.Example != "")
      {
        Debug.Assert(sectionsNames[sectionIndex] == "Example", "There should be 'Example' section now.");

        WriteIndexSectionBegin(sw, sectionsNames[sectionIndex], sectionIndex);
        WriteIndexExample(sw, myClassInfo.Example);
        WriteIndexSectionEnd(sw);

        sectionIndex++;
      }

      WriteIndexFooter(sw);

      sw.Close();
      fs.Close();

      ProcessNamespaceMemberMembers(myClassInfo, namespaceMembersGroupType);
    }
Пример #33
0
        public static string NamespaceMembersGroupToString(NamespaceMembersGroups membersGroupType)
        {
            switch (membersGroupType)
            {
            case NamespaceMembersGroups.PublicClasses: { return("Публичные Классы"); }

            case NamespaceMembersGroups.PublicStructures: { return("Публичные Структуры"); }

            case NamespaceMembersGroups.PublicInterfaces: { return("Публичные Интерфейсы"); }

            case NamespaceMembersGroups.PublicDelegates: { return("Публичные Делегаты"); }

            case NamespaceMembersGroups.PublicEnumerations: { return("Публичные Перечни"); }

            case NamespaceMembersGroups.ProtectedInternalClasses: { return("Защищённые Внутренние Классы"); }

            case NamespaceMembersGroups.ProtectedInternalStructures: { return("Защищённые Внутренние Структуры"); }

            case NamespaceMembersGroups.ProtectedInternalInterfaces: { return("Защищённые Внутренние Интерфейсы"); }

            case NamespaceMembersGroups.ProtectedInternalDelegates: { return("Защищённые Внутренние Делегаты"); }

            case NamespaceMembersGroups.ProtectedInternalEnumerations: { return("Защищённые Внутренние Перечни"); }

            case NamespaceMembersGroups.ProtectedClasses: { return("Защищённые Классы"); }

            case NamespaceMembersGroups.ProtectedStructures: { return("Защищённые Структуры"); }

            case NamespaceMembersGroups.ProtectedInterfaces: { return("Защищённые Интерфейсы"); }

            case NamespaceMembersGroups.ProtectedDelegates: { return("Защищённые Делегаты"); }

            case NamespaceMembersGroups.ProtectedEnumerations: { return("Защищённые Перечни"); }

            case NamespaceMembersGroups.InternalClasses: { return("Внутренние Классы"); }

            case NamespaceMembersGroups.InternalStructures: { return("Внутренние Структуры"); }

            case NamespaceMembersGroups.InternalInterfaces: { return("Внутренние Интерфейсы"); }

            case NamespaceMembersGroups.InternalDelegates: { return("Внутренние Делегаты"); }

            case NamespaceMembersGroups.InternalEnumerations: { return("Внутренние Перечни"); }

            case NamespaceMembersGroups.PrivateClasses: { return("Приватные Классы"); }

            case NamespaceMembersGroups.PrivateStructures: { return("Приватные Структуры"); }

            case NamespaceMembersGroups.PrivateInterfaces: { return("Приватные Интерфейсы"); }

            case NamespaceMembersGroups.PrivateDelegates: { return("Приватные Делегаты"); }

            case NamespaceMembersGroups.PrivateEnumerations: { return("Приватные Перечни"); }

            default:
            {
                Debug.Assert(false, "Impossible! Couldn't recognize type of a namespace member.");

                return(null);
            }
            }
        }