[mapguide-commits] r7003 - in branches/2.4/MgDev/BuildTools: . DoxyTransform DoxyTransform/DoxyTransform DoxyTransform/DoxyTransform/Properties DoxyTransform/Doxygen.NET DoxyTransform/Doxygen.NET/Interfaces DoxyTransform/Doxygen.NET/Members DoxyTransform/Doxygen.NET/Properties DoxyTransform/Doxygen.NET/Types

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Wed Sep 12 07:40:14 PDT 2012


Author: jng
Date: 2012-09-12 07:40:11 -0700 (Wed, 12 Sep 2012)
New Revision: 7003

Added:
   branches/2.4/MgDev/BuildTools/DoxyTransform/
   branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform.exe
   branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform.sln
   branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/
   branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/DoxyTransform.csproj
   branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Program.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Properties/
   branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Properties/AssemblyInfo.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET.dll
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Docs.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Doxygen.NET.csproj
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Interfaces/
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Interfaces/IDocItem.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Member.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Constructor.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Event.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Field.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/MemberDelegate.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Method.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Property.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Namespace.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Parameter.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Properties/
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Properties/AssemblyInfo.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Type.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Class.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Delegate.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Enum.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Interface.cs
   branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Struct.cs
Log:
#2114: Check in a doxygen post-processing utility (DoxyTransform). This application uses a customized version of Doxygen.NET (http://code.google.com/p/doxygen-net/) to post-process the doxygen XML output into .net assembly XML documentation files. When deployed alongside the MapGuide API assemblies it means we now have basic Visual Studio intellisense documentation for the MapGuide API assemblies!

Doxygen.NET is licensed under GNU LGPL 3.0


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform
___________________________________________________________________
Added: bugtraq:number
   + true


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/DoxyTransform.csproj
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/DoxyTransform.csproj	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/DoxyTransform.csproj	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{B9E2366E-6713-4C0A-92F0-E1DABF4B6E90}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>DoxyTransform</RootNamespace>
+    <AssemblyName>DoxyTransform</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Program.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\Doxygen.NET\Doxygen.NET.csproj">
+      <Project>{FB0E5EE3-C5F8-4291-B320-221A2008AC31}</Project>
+      <Name>Doxygen.NET</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Program.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Program.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Program.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,417 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using Doxygen.NET;
+using System.Xml;
+
+namespace DoxyTransform
+{
+    class Program
+    {
+        /*
+         
+         Why does this work? How is this possible? The following reasons:
+         
+          1. Doxygen supports XML output, allowing the API documentation to be represented in a logically structured form
+          2. .net assemblies use XML files for documentation, meaning it is easy to transform the doxygen XML to .net XML
+          3. Doxygen.NET supports parsing a subset of this XML form into Object-oriented classes
+          4. The MapGuide API is fortunately designed and written in a convention-based manner (when you're making bindings 
+             to 3 different languages, you have to!). The convention-based design allows us to make many valid assumptions:
+            a. All classes will be under a single namespace (OSGeo.MapGuide)
+            b. Only classes are exported out to the public API, no enums, structs or other fancy C++ features
+            d. Any word in a summary starting with the letters "Mg" can be assumed to be a class, thus we can replace them with
+               cref links to said class
+            e. Get/Set Methods are decorated with assorted metadata for .net. Just like IMake.exe detects __set, __get as hints to generate .net properties, we can use
+               these same markers as a hint to generate a property entry in our integrated API documentation
+         
+         */
+
+        static void Main(string[] args)
+        {
+            if (args.Length != 2)
+            {
+                Usage();
+                return;
+            }
+
+            if (!Directory.Exists(args[1]))
+            {
+                Console.WriteLine("Doxygen XML output path not found: {0}", args[1]);
+                return;
+            }
+
+            string srcDir = args[1];
+
+            if (args[0].ToLower() == "dotnet")
+            {
+                ProcessDotNet(srcDir);
+            }
+            else if (args[0].ToLower() == "java")
+            {
+                Console.WriteLine("java not supported yet");
+            }
+        }
+
+        const string DOTNET_NAMESPACE = "OSGeo.MapGuide";
+        const string JAVA_PACKAGE = "org.osgeo.mapguide";
+
+        static XmlDocument CreateDotNetDocument(string assemblyName)
+        {
+            var doc = new XmlDocument();
+            doc.LoadXml("<doc><assembly><name>" + assemblyName + "</name></assembly></doc>");
+            return doc;
+        }
+
+        static string GetDotNetClassName(string className)
+        {
+            return DOTNET_NAMESPACE + className;
+        }
+
+        static string FormatDotNetCtor(Class klass, Constructor ctor)
+        {
+            if (ctor.Parameters.Count == 0)
+            {
+                return "M:" + DOTNET_NAMESPACE + "." + klass.Name + ".#ctor";
+            }
+            else
+            {
+                var paramTokens = new List<string>();
+                foreach (var p in ctor.Parameters)
+                {
+                    string clrType = MgTypeToDotNetType(p.Type);
+                    if (clrType == p.Type)
+                        paramTokens.Add(DOTNET_NAMESPACE + "." + p.Type);
+                    else
+                        paramTokens.Add(clrType);
+                }
+                return "M:" + DOTNET_NAMESPACE + "." + klass.Name + ".#ctor(" + string.Join(", ", paramTokens.ToArray()) + ")";
+            }
+        }
+
+        static string FormatDotNetCtor(Class klass, Method ctor)
+        {
+            if (ctor.Parameters.Count == 0)
+            {
+                return "M:" + DOTNET_NAMESPACE + "." + klass.Name + ".#ctor";
+            }
+            else
+            {
+                var paramTokens = new List<string>();
+                foreach (var p in ctor.Parameters)
+                {
+                    string clrType = MgTypeToDotNetType(p.Type);
+                    if (clrType == p.Type)
+                        paramTokens.Add(DOTNET_NAMESPACE + "." + p.Type);
+                    else
+                        paramTokens.Add(clrType);
+                }
+                return "M:" + DOTNET_NAMESPACE + "." + klass.Name + ".#ctor(" + string.Join(", ", paramTokens.ToArray()) + ")";
+            }
+        }
+
+        static string FormatDotNetMethod(Class klass, Method m)
+        {
+            if (m.Parameters.Count == 0)
+            {
+                return "M:" + DOTNET_NAMESPACE + "." + klass.Name + "." + m.Name;
+            }
+            else
+            {
+                var paramTokens = new List<string>();
+                foreach (var p in m.Parameters)
+                {
+                    string clrType = MgTypeToDotNetType(p.Type);
+                    if (clrType == p.Type)
+                        paramTokens.Add(DOTNET_NAMESPACE + "." + p.Type);
+                    else
+                        paramTokens.Add(clrType);
+                }
+                return "M:" + DOTNET_NAMESPACE + "." + klass.Name + "." + m.Name + "(" + string.Join(", ", paramTokens.ToArray()) + ")";
+            }
+        }
+
+        static string MgTypeToDotNetType(string mgType)
+        {
+            switch (mgType)
+            {
+                case "bool":
+                    return "System.Boolean";
+                case "double":
+                    return "System.Double";
+                case "float":
+                    return "System.Single";
+                case "INT16":
+                    return "System.Int16";
+                case "INT32":
+                    return "System.Int32";
+                case "INT64":
+                    return "System.Int64";
+                case "STRING":
+                    return "System.String";
+                case "CREFSTRING":
+                    return "System.String";
+                default:
+                    return mgType;
+            }
+        }
+
+        static void CreateDotNetClassElement(XmlDocument doc, Class klass)
+        {
+            Console.WriteLine("Processing class: " + klass);
+
+            //Class description
+            {
+                var mbr = doc.CreateElement("member");
+                var sum = doc.CreateElement("summary");
+
+                var clsName = doc.CreateAttribute("name");
+                clsName.Value = "T:" + DOTNET_NAMESPACE + "." + klass.Name;
+                mbr.Attributes.Append(clsName);
+
+                sum.InnerXml = klass.Summary;
+
+                mbr.AppendChild(sum);
+                doc.DocumentElement.AppendChild(mbr);
+            }
+
+            //Class members
+            foreach (var m in klass.Members)
+            {
+                if (m.AccessModifier != "public")
+                    continue;
+
+                var method = m as Method;
+                var ctor = m as Constructor;
+                var f = m as Field;
+                if (method != null)
+                {
+                    if (method.Name == klass.Name) //Sanity check
+                        ProcessDotNetClassConstructor(doc, klass, method);
+                    else
+                        ProcessDotNetClassMethod(doc, klass, method);
+                }
+                else if (ctor != null)
+                {
+                    ProcessDotNetClassConstructor(doc, klass, ctor);
+                }
+                else if (f != null)
+                {
+                    ProcessDotNetField(doc, klass, f);
+                }
+            }
+        }
+
+        private static void ProcessDotNetField(XmlDocument doc, Class klass, Field f)
+        {
+            Console.WriteLine("Processing constant: " + klass.Name + "::" + f.Name);
+
+            var mbr = doc.CreateElement("member");
+            var sum = doc.CreateElement("summary");
+
+            var dotNetName = doc.CreateAttribute("name");
+
+            dotNetName.Value = "F:" + DOTNET_NAMESPACE + "." + klass.Name + "." + f.Name;
+
+            mbr.Attributes.Append(dotNetName);
+            sum.InnerText = f.Summary;
+
+            mbr.AppendChild(sum);
+            doc.DocumentElement.AppendChild(mbr);
+        }
+
+        private static void ProcessDotNetClassConstructor(XmlDocument doc, Class klass, Method ctor)
+        {
+            Console.WriteLine("Processing ctor: " + klass.Name);
+
+            var mbr = doc.CreateElement("member");
+            var sum = doc.CreateElement("summary");
+
+            var dotNetName = doc.CreateAttribute("name");
+
+            dotNetName.Value = FormatDotNetCtor(klass, ctor);
+
+            mbr.Attributes.Append(dotNetName);
+            sum.InnerText = ctor.Summary;
+
+            if (ctor.Parameters.Count > 0)
+            {
+                foreach (var p in ctor.Parameters)
+                {
+                    var pel = doc.CreateElement("param");
+                    var pName = doc.CreateAttribute("name");
+                    pName.Value = p.Name.Replace("*", ""); //Strip pointer
+                    pel.Attributes.Append(pName);
+                    mbr.AppendChild(pel);
+                }
+            }
+
+            mbr.AppendChild(sum);
+            doc.DocumentElement.AppendChild(mbr);
+        }
+
+        private static void ProcessDotNetClassConstructor(XmlDocument doc, Class klass, Constructor ctor)
+        {
+            Console.WriteLine("Processing ctor: " + klass.Name);
+
+            var mbr = doc.CreateElement("member");
+            var sum = doc.CreateElement("summary");
+
+            var dotNetName = doc.CreateAttribute("name");
+
+            dotNetName.Value = FormatDotNetCtor(klass, ctor);
+
+            mbr.Attributes.Append(dotNetName);
+            sum.InnerText = ctor.Summary;
+
+            if (ctor.Parameters.Count > 0)
+            {
+                foreach (var p in ctor.Parameters)
+                {
+                    var pel = doc.CreateElement("param");
+                    var pName = doc.CreateAttribute("name");
+                    pName.Value = p.Name.Replace("*", ""); //Strip pointer
+                    pel.Attributes.Append(pName);
+                    mbr.AppendChild(pel);
+                }
+            }
+
+            mbr.AppendChild(sum);
+            doc.DocumentElement.AppendChild(mbr);
+        }
+
+        private static void ProcessDotNetClassMethod(XmlDocument doc, Class klass, Method method)
+        {
+            //Destructors should not be exposed, but nevertheless if they are leaking out here
+            //ignore them
+            if (method.Name.StartsWith("~"))
+                return;
+
+            Console.WriteLine("Processing method: " + klass + "::" + method.Name);
+
+            var mbr = doc.CreateElement("member");
+            var sum = doc.CreateElement("summary");
+
+            var dotNetName = doc.CreateAttribute("name");
+
+            dotNetName.Value = FormatDotNetMethod(klass, method);
+
+            mbr.Attributes.Append(dotNetName);
+            //This may be decorated with markers for IMake.exe, so strip them
+            var methodSum = method.Summary.Replace("__inherited", "");
+            //But before we strip __set or __get we too are interested as this
+            //means a .net property was made for it
+            if (method.Summary.Contains("__set") || method.Summary.Contains("__get"))
+            {
+                ProcessDotNetProperty(doc, klass, GetDotNetPropertyName(method.Name));
+            }
+            //Now strip them
+            methodSum = methodSum.Replace("__set", "").Replace("__get", "");
+            //Only set summary if it wasn't just these markers
+            if (methodSum.Trim() != ",")
+                sum.InnerXml = methodSum;
+
+            if (method.Parameters.Count > 0)
+            {
+                foreach (var p in method.Parameters)
+                {
+                    var pel = doc.CreateElement("param");
+                    var pName = doc.CreateAttribute("name");
+                    pName.Value = p.Name.Replace("*", "")   //Strip pointer
+                                        .Replace("=0", ""); //Strip default parameter values
+                    pel.Attributes.Append(pName);
+                    mbr.AppendChild(pel);
+                }
+            }
+
+            mbr.AppendChild(sum);
+            doc.DocumentElement.AppendChild(mbr);
+        }
+
+        private static string GetDotNetPropertyName(string methodName)
+        {
+            if (methodName.Length > 1)
+            {
+                //Assuming a camel-cased method name, the property name will be the substring
+                //starting from the second capitalized letter of this method name
+
+                for (int i = 1; i < methodName.Length; i++)
+                {
+                    if (Char.IsUpper(methodName, i))
+                        return methodName.Substring(i);
+                }
+            }
+            return methodName;
+        }
+
+        private static void ProcessDotNetProperty(XmlDocument doc, Class klass, string propertyName)
+        {
+            var mbr = doc.CreateElement("member");
+            var sum = doc.CreateElement("summary");
+
+            var dotNetName = doc.CreateAttribute("name");
+
+            dotNetName.Value = "P:" + DOTNET_NAMESPACE + "." + klass.Name + "." + propertyName;
+
+            mbr.Attributes.Append(dotNetName);
+
+            mbr.AppendChild(sum);
+            doc.DocumentElement.AppendChild(mbr);
+        }
+
+        static XmlDocument foundationDoc = null;
+        static XmlDocument geometryDoc = null;
+        static XmlDocument platformBaseDoc = null;
+        static XmlDocument mapguideCommonDoc = null;
+        static XmlDocument webDoc = null;
+
+        private static XmlDocument ResolveDocument(string clsHeaderLocation)
+        {
+            if (clsHeaderLocation == null)
+                return null;
+
+            if (clsHeaderLocation.Contains("/Common/Foundation/"))
+                return foundationDoc;
+            else if (clsHeaderLocation.Contains("/Common/Geometry/"))
+                return geometryDoc;
+            else if (clsHeaderLocation.Contains("/Common/PlatformBase"))
+                return platformBaseDoc;
+            else if (clsHeaderLocation.Contains("/Common/MapGuideCommon"))
+                return mapguideCommonDoc;
+            else if (clsHeaderLocation.Contains("/Web/src/WebApp"))
+                return webDoc;
+
+            return null;
+        }
+
+        private static void ProcessDotNet(string srcDir)
+        {
+            foundationDoc = CreateDotNetDocument("OSGeo.MapGuide.Foundation");
+            geometryDoc = CreateDotNetDocument("OSGeo.MapGuide.Geometry");
+            platformBaseDoc = CreateDotNetDocument("OSGeo.MapGuide.PlatformBase");
+            mapguideCommonDoc = CreateDotNetDocument("OSGeo.MapGuide.MapGuideCommon");
+            webDoc = CreateDotNetDocument("OSGeo.MapGuide.Web");
+            
+            var docs = new Docs(srcDir);
+            docs.LoadGlobalTypes(true);
+            var globTypes = docs.GetAllGlobalTypes();
+            foreach (var type in globTypes)
+            {
+                var cls = type as Class;
+                var doc = ResolveDocument(type.Location);
+                if (cls != null && doc != null)
+                    CreateDotNetClassElement(doc, cls);
+            }
+            foundationDoc.Save("OSGeo.MapGuide.Foundation.xml");
+            geometryDoc.Save("OSGeo.MapGuide.Geometry.xml");
+            platformBaseDoc.Save("OSGeo.MapGuide.PlatformBase.xml");
+            mapguideCommonDoc.Save("OSGeo.MapGuide.MapGuideCommon.xml");
+            webDoc.Save("OSGeo.MapGuide.Web.xml");
+        }
+
+        static void Usage()
+        {
+            Console.WriteLine("DoxyTransform.exe <dotnet|java> <doxygen xml path>");
+        }
+    }
+}


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Properties
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Properties/AssemblyInfo.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Properties/AssemblyInfo.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform/Properties/AssemblyInfo.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("DoxyTransform")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("DoxyTransform")]
+[assembly: AssemblyCopyright("Copyright ©  2012")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("10850e9b-6ecf-42c8-9c09-9388fbfed685")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform.exe
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform.exe
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform.sln
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform.sln	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/DoxyTransform.sln	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DoxyTransform", "DoxyTransform\DoxyTransform.csproj", "{B9E2366E-6713-4C0A-92F0-E1DABF4B6E90}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Doxygen.NET", "Doxygen.NET\Doxygen.NET.csproj", "{FB0E5EE3-C5F8-4291-B320-221A2008AC31}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B9E2366E-6713-4C0A-92F0-E1DABF4B6E90}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{B9E2366E-6713-4C0A-92F0-E1DABF4B6E90}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{B9E2366E-6713-4C0A-92F0-E1DABF4B6E90}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{B9E2366E-6713-4C0A-92F0-E1DABF4B6E90}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FB0E5EE3-C5F8-4291-B320-221A2008AC31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{FB0E5EE3-C5F8-4291-B320-221A2008AC31}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FB0E5EE3-C5F8-4291-B320-221A2008AC31}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{FB0E5EE3-C5F8-4291-B320-221A2008AC31}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Docs.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Docs.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Docs.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,340 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Xml;
+
+namespace Doxygen.NET
+{
+    public class Docs
+    {
+        private XmlDocument _indexXmlDoc;
+
+        public List<FileInfo> XmlFiles { get; set; }
+        public DirectoryInfo XmlDirectory { get; protected set; }
+        public List<Namespace> Namespaces { get; protected set; }
+
+        public bool EagerParsing { get; set; }
+                
+        public Docs(string doxygenXmlOuputDirectoryPath)
+        {
+            if (!Directory.Exists(doxygenXmlOuputDirectoryPath))
+                throw new Exception("The specified directory does not exist.");
+
+            XmlDirectory = new DirectoryInfo(doxygenXmlOuputDirectoryPath);
+
+           if (!File.Exists(Path.Combine(XmlDirectory.FullName, "index.xml")))
+                throw new Exception("The specified directory does not contain an essential file, \"index.xml\".");
+
+           EagerParsing = true;
+
+            _indexXmlDoc = new XmlDocument();
+            _indexXmlDoc.Load(Path.Combine(XmlDirectory.FullName, "index.xml"));
+
+            XmlFiles = new List<FileInfo>(XmlDirectory.GetFiles("*.xml", SearchOption.AllDirectories));
+
+            LoadNamespaces();
+        }
+
+        public Namespace GetNamespaceByName(string namespaceName)
+        {
+            return Namespaces.Find(delegate(Namespace n) { return n.FullName == namespaceName; });
+        }
+
+        public Type GetTypeByName(string typeFullName)
+        {
+            string namespaceName = typeFullName.Remove(typeFullName.LastIndexOf("."));
+            Namespace nspace = GetNamespaceByName(namespaceName);
+
+            if (nspace != null)
+            {
+                Type type = nspace.Types.Find(delegate(Type t) { return t.FullName == typeFullName; });
+                return type;
+            }
+
+            return null;
+        }
+
+        public Type GetTypeByID(string id)
+        {
+            foreach (Namespace nspace in Namespaces)
+            {
+                Type type = nspace.Types.Find(delegate(Type t) { return t.ID == id; });
+                if (type != null)
+                    return type;
+            }
+            return null;
+        }
+
+        public List<Class> GetAllClasses()
+        {
+            List<Class> classes = new List<Class>();
+            foreach (Namespace nspace in Namespaces)
+            {
+                foreach (Class c in nspace.Classes)
+                {
+                    classes.Add(c);
+                }
+            }
+            return classes;
+        }
+
+        public void LoadNamespaces()
+        {
+            Namespaces = new List<Namespace>();
+            XmlNodeList namespaceXmlNodes = _indexXmlDoc.SelectNodes("/doxygenindex/compound[@kind=\"namespace\"]");
+
+            foreach (XmlNode namespaceXmlNode in namespaceXmlNodes)
+            {
+                Namespace nspace = new Namespace();
+                nspace.ID = namespaceXmlNode.Attributes["refid"].Value;
+                nspace.FullName = namespaceXmlNode["name"].InnerText.Replace("::", ".");
+
+                if (EagerParsing)
+                {
+                    LoadTypes(nspace, false);
+                }
+                Namespaces.Add(nspace);
+            }
+        }
+
+        private List<Type> _globalTypes = new List<Type>();
+
+        public List<Type> GetAllGlobalTypes() { return _globalTypes; }
+
+        public void LoadGlobalTypes(bool forceReload)
+        {
+            if (!forceReload && _globalTypes.Count > 0)
+                return;
+
+            _globalTypes = new List<Type>();
+
+            XmlNodeList typesXmlNodes = _indexXmlDoc.SelectNodes(
+                "/doxygenindex/compound[@kind=\"class\" or @kind=\"interface\" or @kind=\"enum\" or @kind=\"struct\" or @kind=\"delegate\"]");
+
+            foreach (XmlNode typeXmlNode in typesXmlNodes)
+            {
+                string typeName = typeXmlNode["name"].InnerText.Replace("::", ".");
+                if (!typeName.Contains("."))
+                {
+                    Type t = CreateNewType(typeXmlNode.Attributes["kind"].Value);
+
+                    t.ID = typeXmlNode.Attributes["refid"].Value;
+                    t.Kind = typeXmlNode.Attributes["kind"].Value;
+                    t.FullName = typeName;
+
+                    if (EagerParsing)
+                    {
+                        LoadTypesMembers(t, true);
+                    }
+
+                    _globalTypes.Add(t);
+                }
+            }
+        }
+
+        public void LoadTypes(Namespace nspace, bool forceReload)
+        {
+            if (!forceReload && nspace.Types.Count > 0)
+                return;
+
+            nspace.Types = new List<Type>();
+
+            XmlNodeList typesXmlNodes = _indexXmlDoc.SelectNodes(
+                "/doxygenindex/compound[@kind=\"class\" or @kind=\"interface\" or @kind=\"enum\" or @kind=\"struct\" or @kind=\"delegate\"]");
+
+            foreach (XmlNode typeXmlNode in typesXmlNodes)
+            {
+                string typeName = typeXmlNode["name"].InnerText.Replace("::", ".");
+                if (typeName.Contains(".") && typeName.Remove(typeName.LastIndexOf(".")) == nspace.FullName)
+                {
+                    Type t = CreateNewType(typeXmlNode.Attributes["kind"].Value);
+
+                    t.ID = typeXmlNode.Attributes["refid"].Value;
+                    t.Kind = typeXmlNode.Attributes["kind"].Value;
+                    t.FullName = typeName;
+                    t.Namespace = nspace;
+
+                    if (EagerParsing)
+                    {
+                        LoadTypesMembers(t, false);
+                    }
+                    nspace.Types.Add(t);
+                }
+            }
+        }
+        
+        public void LoadTypesMembers(Type t, bool forceReload)
+        {
+            if (!forceReload && t.Members.Count > 0)
+                return;
+
+            FileInfo typeXmlFile = XmlFiles.Find(delegate(FileInfo file) 
+                {
+                    //Normalize bits
+                    string fullPath = file.FullName.Replace('\\', Path.DirectorySeparatorChar).Replace('/', Path.DirectorySeparatorChar);
+                    string find = (t.ID + ".xml").Replace('\\', Path.DirectorySeparatorChar).Replace('/', Path.DirectorySeparatorChar);
+                    return fullPath.EndsWith(find);
+                    //return file.Name.Remove(file.Name.LastIndexOf(file.Extension)) == t.ID; 
+                });
+
+            if (typeXmlFile == null || !typeXmlFile.Exists)
+                return;
+
+            XmlDocument typeDoc = new XmlDocument();
+            using (var sr = new StreamReader(typeXmlFile.FullName, Encoding.UTF8))
+            {
+                typeDoc.Load(sr);
+            }
+
+            t.Summary = StripXml(System.Web.HttpUtility.HtmlDecode(typeDoc.SelectSingleNode("/doxygen/compounddef/briefdescription").InnerXml)); //MapGuide-specific
+            t.Description = typeDoc.SelectSingleNode("/doxygen/compounddef/detaileddescription").InnerXml.Replace("preformatted", "pre");
+
+            XmlNodeList baseTypes = typeDoc.SelectNodes("/doxygen/compounddef/basecompoundref");
+            
+            if (baseTypes != null)
+            {
+                foreach (XmlNode baseType in baseTypes)
+                {
+                    t.BaseTypes.Add(baseType.Attributes["refid"].Value);
+                }
+            }
+
+            XmlNodeList members = typeDoc.SelectNodes("/doxygen/compounddef/sectiondef/memberdef");
+            
+            foreach (XmlNode member in members)
+            {
+                string kind = member.Attributes["kind"].Value;
+                string name = member["name"].InnerText;
+                string args = member["argsstring"] != null ? 
+                    member["argsstring"].InnerText.Replace("(", "").Replace(")", "").Trim() :
+                    string.Empty;
+
+                List<Parameter> parameters = new List<Parameter>();
+                
+                //TODO: parse out the <parameterlist> elements as they contain parameter descriptions and exceptions to
+                //watch out for
+                if (!string.IsNullOrEmpty(args) && kind == "function")
+                {
+                    string[] argsSplits = args.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+                    foreach (string arg in argsSplits)
+                    {
+                        string[] argParts = arg.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
+                        if (argParts.Length != 2)
+                            continue;
+
+                        Parameter p = new Parameter();
+                        p.Type = argParts[0].Trim();
+                        p.Name = argParts[1].Trim();
+                        parameters.Add(p);
+                    }
+                }
+                
+                if (kind == "function" && name == t.Name)
+                    kind = "ctor";
+
+                Member m = CreateNewMember(kind);
+
+                if (parameters != null && parameters.Count > 0)
+                    (m as Method).Parameters = parameters;
+
+                //MapGuide-specific: We want to capture the file path so we know which .net assembly doc to assign
+                //to. MapGuide follows a one-class-per-file design for public classes, so sampling the first instance
+                //of a <location> node is enough
+                if (member["location"] != null && string.IsNullOrEmpty(t.Location))
+                {
+                    t.Location = member["location"].Attributes["file"].Value;
+                }
+
+                m.ID = member.Attributes["id"].Value;
+                m.FullName = string.Format("{0}.{1}", t.FullName, name);
+                m.Name = name;
+                m.Kind = kind;
+                m.Summary = StripXml(System.Web.HttpUtility.HtmlDecode(member["briefdescription"].InnerXml)); //MapGuide-specifc
+                m.Description = member["detaileddescription"].InnerXml.Replace("preformatted", "pre");
+                m.AccessModifier = member.Attributes["prot"].Value;
+                m.Parent = t;
+                m.ReturnType = member["type"] != null ?
+                    member["type"].InnerText : string.Empty;
+                t.Members.Add(m);
+            }
+        }
+
+        private static string StripXml(string source)
+        {
+            char[] buffer = new char[source.Length];
+            int bufferIndex = 0;
+            bool inside = false;
+
+            for (int i = 0; i < source.Length; i++)
+            {
+                char let = source[i];
+                if (let == '<')
+                {
+                    inside = true;
+                    continue;
+                }
+                if (let == '>')
+                {
+                    inside = false;
+                    continue;
+                }
+                if (!inside)
+                {
+                    buffer[bufferIndex] = let;
+                    bufferIndex++;
+                }
+            }
+            return new string(buffer, 0, bufferIndex);
+        }
+
+        private Type CreateNewType(string kind)
+        {
+            switch (kind)
+            {
+                case "class":
+                    return new Class();
+                case "interface":
+                    return new Interface();
+                case "delegate":
+                    return new Delegate();
+                case "enum":
+                    return new Enum();
+                case "struct":
+                    return new Struct();
+            }
+            return new Type();
+        }
+
+        private Member CreateNewMember(string kind)
+        {
+            switch (kind)
+            {
+                case "property":
+                    return new Property();
+                case "event":
+                    return new Event();
+                case "function":
+                    return new Method();
+                case "variable":
+                    return new Field();
+                case "ctor":
+                    return new Constructor();
+                case "memberdelegates":
+                    return new MemberDelegate();
+            }
+            return new Member();
+        }
+    }
+}

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Doxygen.NET.csproj
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Doxygen.NET.csproj	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Doxygen.NET.csproj	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{FB0E5EE3-C5F8-4291-B320-221A2008AC31}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>Doxygen.NET</RootNamespace>
+    <AssemblyName>Doxygen.NET</AssemblyName>
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Data" />
+    <Reference Include="System.Web" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Members\Constructor.cs" />
+    <Compile Include="Members\MemberDelegate.cs" />
+    <Compile Include="Members\Field.cs" />
+    <Compile Include="Members\Method.cs" />
+    <Compile Include="Members\Property.cs" />
+    <Compile Include="Parameter.cs" />
+    <Compile Include="Types\Class.cs" />
+    <Compile Include="Members\Event.cs" />
+    <Compile Include="Types\Delegate.cs" />
+    <Compile Include="Docs.cs" />
+    <Compile Include="Types\Enum.cs" />
+    <Compile Include="Types\Interface.cs" />
+    <Compile Include="Interfaces\IDocItem.cs" />
+    <Compile Include="Member.cs" />
+    <Compile Include="Namespace.cs" />
+    <Compile Include="Types\Struct.cs" />
+    <Compile Include="Type.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+</Project>
\ No newline at end of file


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Interfaces
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Interfaces/IDocItem.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Interfaces/IDocItem.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Interfaces/IDocItem.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public interface IDocItem
+    {
+        string ID { get; }
+        string Kind { get; }
+        string FullName { get; }
+        string Description { get; }
+    }
+}

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Member.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Member.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Member.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,35 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Member: IDocItem
+    {
+        #region IDocItem Members
+
+        public virtual string ID { get; protected internal set; }
+        public virtual string Kind { get; protected internal set; }
+        public virtual string FullName { get; protected internal set; }
+        public virtual string Summary { get; protected internal set; }
+        public virtual string Description { get; protected internal set; }
+
+        #endregion
+
+        public string Name { get; protected internal set; }
+        public virtual string AccessModifier { get; protected internal set; }
+        public virtual string ReturnType { get; protected internal set; }
+        public Type Parent { get; protected internal set; }
+    }
+}


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Constructor.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Constructor.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Constructor.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Constructor : Method
+    {
+        public override string Kind
+        {
+            get { return "ctor"; }
+        }
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Event.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Event.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Event.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Event : Member
+    {
+        public override string Kind
+        {
+            get { return "event"; }
+        }
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Field.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Field.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Field.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Field : Member
+    {
+        public override string Kind
+        {
+            get { return "variable"; }
+        }
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/MemberDelegate.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/MemberDelegate.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/MemberDelegate.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class MemberDelegate : Member
+    {
+        public override string Kind
+        {
+            get { return "memberdelegate"; }
+        }
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Method.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Method.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Method.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,32 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Method : Member
+    {
+        public override string Kind
+        {
+            get { return "function"; }
+        }
+
+        public List<Parameter> Parameters { get; protected internal set; }
+
+        public Method()
+        {
+            Parameters = new List<Parameter>();
+        }
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Property.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Property.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Members/Property.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Property : Member
+    {
+        public override string Kind
+        {
+            get { return "property"; }
+        }
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Namespace.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Namespace.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Namespace.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,71 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Namespace : IDocItem
+    {
+        #region IDocItem Members
+
+        public string ID { get; protected internal set; }
+
+        public string Kind 
+        {
+            get { return "namespace"; }
+        }
+
+        public string FullName { get; protected internal set; }
+        public string Description { get; protected set; }
+
+        #endregion
+
+        public Namespace()
+        {
+            Types = new List<Type>();
+        }
+
+        public List<Type> Types { get; protected internal set; }
+
+        public List<Type> Classes
+        {
+            get { return Types.FindAll(FindByKind("class")); }
+        }
+
+        public List<Type> Structs
+        {
+            get { return Types.FindAll(FindByKind("struct")); }
+        }
+
+        public List<Type> Enums
+        {
+            get { return Types.FindAll(FindByKind("enum")); }
+        }
+
+        public List<Type> Delegates
+        {
+            get { return Types.FindAll(FindByKind("delegate")); }
+        }
+
+        private Predicate<Type> FindByKind(string kind)
+        {
+            return delegate(Type type) { return type.Kind == kind; };
+        }
+
+        public override string ToString()
+        {
+            return FullName;
+        }
+    }
+}

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Parameter.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Parameter.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Parameter.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,23 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Parameter
+    {
+        public string Type { get; protected internal set; }
+        public string Name { get; protected internal set; }
+    }
+}


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Properties
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Properties/AssemblyInfo.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Properties/AssemblyInfo.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Properties/AssemblyInfo.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Doxygen.NET")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Doxygen.NET")]
+[assembly: AssemblyCopyright("Copyright ©  2009")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("1654f1ca-60ea-4da5-9073-b3ce21960857")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers 
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Type.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Type.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Type.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,87 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Type : IDocItem
+    {
+        #region IDocItem Members
+
+        public virtual string ID { get; protected internal set; }
+        public virtual string Kind { get; protected internal set; }
+        public virtual string FullName { get; protected internal set; }
+        public virtual string Summary { get; protected internal set; }
+        public virtual string Description { get; protected internal set; }
+        public virtual string Location { get; protected internal set; }
+
+        #endregion
+
+        public virtual Namespace Namespace { get; protected internal set; }
+        public virtual List<Type> NestedTypes { get; protected internal set; }
+        public virtual List<Member> Members { get; protected internal set; }
+        public virtual List<string> BaseTypes { get; protected internal set; }
+
+        public virtual string Name
+        {
+            get 
+            { 
+                return FullName.Contains(".") ? 
+                    FullName.Remove(0, FullName.LastIndexOf(".") + 1): 
+                    FullName; 
+            }
+        }
+
+        public Type()
+        {
+            BaseTypes = new List<string>();
+            Members = new List<Member>();
+        }
+
+        public List<Member> Methods
+        {
+            get { return Members.FindAll(FindByKind("function")); }
+        }
+
+        public List<Member> Constructors
+        {
+            get { return Members.FindAll(FindByKind("ctor")); }
+        }
+
+        public List<Member> Properties
+        {
+            get { return Members.FindAll(FindByKind("property")); }
+        }
+
+        public List<Member> Events
+        {
+            get { return Members.FindAll(FindByKind("event")); }
+        }
+
+        public List<Member> MemberDelegates
+        {
+            get { return Members.FindAll(FindByKind("memberdelegates")); }
+        }
+
+        private Predicate<Member> FindByKind(string kind)
+        {
+            return delegate(Member member) { return member.Kind == kind; };
+        }
+
+        public override string ToString()
+        {
+            return FullName;
+        }
+    }
+}


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Class.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Class.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Class.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Class : Type
+    {
+        public override string Kind
+        {
+            get { return "class"; }
+        }
+    }
+}
\ No newline at end of file

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Delegate.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Delegate.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Delegate.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,30 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Delegate : Type
+    {
+        public override string Kind
+        {
+            get { return "delegate"; }
+        }
+
+        public override List<Type> NestedTypes
+        {
+            get { return null; }
+        }
+    }
+}

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Enum.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Enum.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Enum.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,30 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Enum : Type
+    {
+        public override string Kind
+        {
+            get { return "enum"; }
+        }
+
+        public override List<Type> NestedTypes
+        {
+            get { return null; }
+        }
+    }
+}

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Interface.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Interface.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Interface.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Interface : Class
+    {
+        public override string Kind
+        {
+            get { return "interface"; }
+        }
+    }
+}

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Struct.cs
===================================================================
--- branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Struct.cs	                        (rev 0)
+++ branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET/Types/Struct.cs	2012-09-12 14:40:11 UTC (rev 7003)
@@ -0,0 +1,25 @@
+/*
+ * Doxygen.NET - .NET object wrappers for Doxygen
+ * Copyright 2009 - Ra-Software AS
+ * This code is licensed under the LGPL version 3.
+ * 
+ * Authors: 
+ * Thomas Hansen (thomas at ra-ajax.org)
+ * Kariem Ali (kariem at ra-ajax.org)
+ * 
+ */
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Doxygen.NET
+{
+    public class Struct : Type
+    {
+        public override string Kind
+        {
+            get { return "struct"; }
+        }
+    }
+}

Added: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET.dll
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/BuildTools/DoxyTransform/Doxygen.NET.dll
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream



More information about the mapguide-commits mailing list