Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/api-doc-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mdoc
diff options
context:
space:
mode:
authorkatsiaryna_bialiatka <katsiaryna_bialiatka@epam.com>2017-12-22 19:15:31 +0300
committerJoel Martinez <joelmartinez@gmail.com>2018-01-12 01:11:42 +0300
commit6533035ec31f38543532568bc499aba2a98e1788 (patch)
treec9e7e3bdefd3299bfbf28dd5bd6b5bcc43fd988f /mdoc
parent8ff2931c4e40e1c3687e8efa6fb4e8078b3a3c4b (diff)
[mdoc] Support for C++ signatures
Closes #132
Diffstat (limited to 'mdoc')
-rw-r--r--mdoc/Consts.cs12
-rw-r--r--mdoc/Makefile40
-rw-r--r--mdoc/Mono.Documentation/MDocUpdater.cs51
-rw-r--r--mdoc/Mono.Documentation/Updater/DocUtils.cs20
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs572
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxMemberFormatter.cs13
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs1098
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppMemberFormatter.cs14
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs348
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtMemberFormatter.cs14
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs20
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs32
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs3
-rw-r--r--mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs9
-rw-r--r--mdoc/Test/UwpTestWinRtComponentCpp.winmdbin0 -> 6656 bytes
-rw-r--r--mdoc/Test/en.expected-cppcli/FrameworksIndex/One.xml20
-rw-r--r--mdoc/Test/en.expected-cppcli/FrameworksIndex/Two.xml17
-rw-r--r--mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClass.xml92
-rw-r--r--mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClassExtensions.xml41
-rw-r--r--mdoc/Test/en.expected-cppcli/MyFramework.MyOtherNamespace/MyOtherClass.xml96
-rw-r--r--mdoc/Test/en.expected-cppcli/MyNamespace/MyClass.xml57
-rw-r--r--mdoc/Test/en.expected-cppcli/index.xml73
-rw-r--r--mdoc/Test/en.expected-cppcli/ns-MyFramework.MyNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppcli/ns-MyFramework.MyOtherNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppcli/ns-MyNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppcx/FrameworksIndex/One.xml20
-rw-r--r--mdoc/Test/en.expected-cppcx/FrameworksIndex/Two.xml17
-rw-r--r--mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClass.xml91
-rw-r--r--mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClassExtensions.xml40
-rw-r--r--mdoc/Test/en.expected-cppcx/MyFramework.MyOtherNamespace/MyOtherClass.xml95
-rw-r--r--mdoc/Test/en.expected-cppcx/MyNamespace/MyClass.xml56
-rw-r--r--mdoc/Test/en.expected-cppcx/index.xml72
-rw-r--r--mdoc/Test/en.expected-cppcx/ns-MyFramework.MyNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppcx/ns-MyFramework.MyOtherNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppcx/ns-MyNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Extensions.xml143
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Func`2.xml64
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml35
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml21
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml35
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1.xml147
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/IFoo`1.xml47
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1+Helper`2.xml63
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml209
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`2.xml443
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Color.xml82
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/D.xml23
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocAttribute.xml105
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocValueType.xml59
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/IProcess.xml15
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/UseLists.xml169
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Del.xml23
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Direction.xml87
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+IMenuItem.xml50
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml32
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml32
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double.xml32
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass.xml67
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass`1.xml71
-rw-r--r--mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml873
-rw-r--r--mdoc/Test/en.expected-cppcx2/NoNamespace.xml32
-rw-r--r--mdoc/Test/en.expected-cppcx2/System/Action`1.xml26
-rw-r--r--mdoc/Test/en.expected-cppcx2/System/Array.xml110
-rw-r--r--mdoc/Test/en.expected-cppcx2/System/AsyncCallback.xml22
-rw-r--r--mdoc/Test/en.expected-cppcx2/System/Environment+SpecialFolder.xml16
-rw-r--r--mdoc/Test/en.expected-cppcx2/System/Environment.xml71
-rw-r--r--mdoc/Test/en.expected-cppcx2/index.xml225
-rw-r--r--mdoc/Test/en.expected-cppcx2/ns-.xml6
-rw-r--r--mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.Generic.xml6
-rw-r--r--mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.xml6
-rw-r--r--mdoc/Test/en.expected-cppcx2/ns-System.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt/FrameworksIndex/One.xml20
-rw-r--r--mdoc/Test/en.expected-cppwinrt/FrameworksIndex/Two.xml17
-rw-r--r--mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml90
-rw-r--r--mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml40
-rw-r--r--mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml95
-rw-r--r--mdoc/Test/en.expected-cppwinrt/MyNamespace/MyClass.xml57
-rw-r--r--mdoc/Test/en.expected-cppwinrt/index.xml72
-rw-r--r--mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyOtherNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt/ns-MyNamespace.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml141
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Func`2.xml64
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml35
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml21
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml36
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml151
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml47
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml64
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml211
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml438
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Color.xml82
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/D.xml23
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml103
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml59
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/IProcess.xml15
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml171
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Del.xml22
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Direction.xml87
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+IMenuItem.xml49
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml33
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml33
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double.xml33
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml68
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml72
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml887
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/NoNamespace.xml33
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/System/Action`1.xml26
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/System/Array.xml110
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/System/AsyncCallback.xml22
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/System/Environment+SpecialFolder.xml16
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/System/Environment.xml70
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/index.xml222
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/ns-.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.Generic.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.xml6
-rw-r--r--mdoc/Test/en.expected-cppwinrt2/ns-System.xml6
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class2.xml35
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml71
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class4.xml40
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml226
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml146
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Color1.xml55
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/CustomAttribute1.xml74
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandler.xml30
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandlerWithSpecificType.xml30
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/SomethingHappenedEventHandler.xml32
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/index.xml26
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace2.xml6
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace222.xml6
-rw-r--r--mdoc/Test/ex.expected-cppwinrtuwp/ns-UwpTestWinRtComponentCpp.xml6
-rw-r--r--mdoc/mdoc.Test/BasicFormatterTests.cs70
-rw-r--r--mdoc/mdoc.Test/CppCxFormatterMembersTests.cs143
-rw-r--r--mdoc/mdoc.Test/CppCxFormatterTypesTests.cs197
-rw-r--r--mdoc/mdoc.Test/CppFormatterTests.cs194
-rw-r--r--mdoc/mdoc.Test/CppFullFormatterTests.cs308
-rw-r--r--mdoc/mdoc.Test/CppWinRtFormatterTests.cs146
-rw-r--r--mdoc/mdoc.Test/CppWinRtMembersTests.cs134
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp166
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.h93
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.cpp7
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.h44
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj234
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj.filters19
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.cpp1
-rw-r--r--mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.h4
-rw-r--r--mdoc/mdoc.Test/mdoc.Test.csproj23
-rw-r--r--mdoc/mdoc.csproj8
148 files changed, 12910 insertions, 63 deletions
diff --git a/mdoc/Consts.cs b/mdoc/Consts.cs
index 18d74d96..376696a4 100644
--- a/mdoc/Consts.cs
+++ b/mdoc/Consts.cs
@@ -5,17 +5,23 @@ namespace Mono.Documentation
{
public static string MonoVersion = "5.4.1.0";
public const string DocId = "DocId";
- public const string VbNet = "VB.NET";
+ public const string CppCli = "C++ CLI";
+ public const string CppCx = "C++ CX";
+ public const string CppWinRt = "C++ WINRT";
+ public const string VbNet = "VB.NET";
public const string DocIdLowCase = "docid";
public const string VbNetLowCase = "vb.net";
+ public const string CppCliLowCase = "c++/cli";
+ public const string CppCxLowCase = "c++/cx";
+ public const string CppWinRtLowCase = "c++/winrt";
+ public const string Tab = " ";
public const string FSharp = "F#";
public const string FSharpLowCase = "f#";
public const string Javascript = "JavaScript";
public const string JavascriptLowCase = "javascript";
- public const string Tab = " ";
public const string DependencyPropertyFullName = "System.Windows.DependencyProperty";
public const string DependencyObjectFullName = "System.Windows.DependencyObject";
public const string VoidFullName = "System.Void";
- }
+ }
}
diff --git a/mdoc/Makefile b/mdoc/Makefile
index cfa1fb2b..55d8be89 100644
--- a/mdoc/Makefile
+++ b/mdoc/Makefile
@@ -180,7 +180,39 @@ check-monodocer-vbnet: Test/FrameworkTestData
-rm -Rf Test/en.actual
$(MONO) $(PROGRAM) update -lang vb.net -o Test/en.actual -frameworks Test/FrameworkTestData
$(DIFF) Test/en.expected-vbnet Test/en.actual
+
+check-monodocer-cppcli: Test/FrameworkTestData
+ -rm -Rf Test/en.actual
+ $(MONO) $(PROGRAM) update -lang c++/cli -o Test/en.actual -frameworks Test/FrameworkTestData
+ $(DIFF) Test/en.expected-cppcli Test/en.actual
+
+check-monodocer-cppwinrtUwp:
+ -rm -Rf Test/en.actual
+ $(MONO) $(PROGRAM) update -lib ..\external\Windows --lang c++/winrt -o Test/en.actual Test/UwpTestWinRtComponentCpp.winmd
+ $(DIFF) Test/ex.expected-cppwinrtuwp Test/en.actual
+
+check-monodocer-cppcx: Test/FrameworkTestData
+ -rm -Rf Test/en.actual
+ $(MONO) $(PROGRAM) update -lang c++/cx -o Test/en.actual -frameworks Test/FrameworkTestData
+ $(DIFF) Test/en.expected-cppcx Test/en.actual
+
+check-monodocer-cppcxDocTest: Test/DocTest.dll
+ -rm -Rf Test/en.actual
+ $(MONO) $(PROGRAM) update -lang c++/cx -o Test/en.actual Test/DocTest.dll
+ $(DIFF) Test/en.expected-cppcx2 Test/en.actual
+
+check-monodocer-cppwinrt: Test/FrameworkTestData
+ -rm -Rf Test/en.actual
+ $(MONO) $(PROGRAM) update -lang c++/winrt -o Test/en.actual -frameworks Test/FrameworkTestData
+ $(DIFF) Test/en.expected-cppwinrt Test/en.actual
+
+check-monodocer-cppwinrtDocTest: Test/DocTest.dll
+ -rm -Rf Test/en.actual
+ $(MONO) $(PROGRAM) update -lang c++/winrt -o Test/en.actual Test/DocTest.dll
+ $(DIFF) Test/en.expected-cppwinrt2 Test/en.actual
+
+
check-monodocer-vbnet2:
-rm -Rf Test/en.actual
$(MAKE) Test/DocTest.dll-v1
@@ -559,7 +591,7 @@ run-test-local: check-doc-tools
run-test-update : check-doc-tools-update
-check-doc-tools: check-monodocer-since \
+check-doc-tools: check-monodocer-since \
check-monodocer-importecmadoc \
check-monodocer-importslashdoc \
check-monodocer-import-fx \
@@ -593,6 +625,12 @@ check-doc-tools: check-monodocer-since \
check-monodocer-fsharp \
check-monodocer-attached-entities \
check-monodocer-members-implementation \
+ check-monodocer-cppcli \
+ check-monodocer-cppcxDocTest\
+ check-monodocer-cppcx\
+ check-monodocer-cppwinrtDocTest\
+ check-monodocer-cppwinrt\
+ check-monodocer-cppwinrtUwp\
check-doc-tools-update: check-monodocer-since-update \
diff --git a/mdoc/Mono.Documentation/MDocUpdater.cs b/mdoc/Mono.Documentation/MDocUpdater.cs
index 2dde2be9..2d33eddb 100644
--- a/mdoc/Mono.Documentation/MDocUpdater.cs
+++ b/mdoc/Mono.Documentation/MDocUpdater.cs
@@ -10,8 +10,10 @@ using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
using mdoc.Mono.Documentation.Updater.Formatters;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
using Mono.Cecil;
using Mono.Documentation.Updater;
+using Mono.Documentation.Updater.CppFormatters;
using Mono.Documentation.Updater.Frameworks;
using Mono.Documentation.Updater.Statistics;
using Mono.Documentation.Util;
@@ -51,11 +53,13 @@ namespace Mono.Documentation
static MemberFormatter[] typeFormatters = new MemberFormatter[]{
new CSharpMemberFormatter (),
new ILMemberFormatter (),
+
};
static MemberFormatter[] memberFormatters = new MemberFormatter[]{
new CSharpFullMemberFormatter (),
- new ILFullMemberFormatter ()
+ new ILFullMemberFormatter (),
+
};
internal static readonly MemberFormatter slashdocFormatter = new SlashDocMemberFormatter ();
@@ -260,7 +264,7 @@ namespace Mono.Documentation
Version = f.Elements("package")
?.FirstOrDefault()?.Attribute("Version")?.Value,
Id = f.Elements("package")
- ?.FirstOrDefault()?.Attribute("Id")?.Value
+ ?.FirstOrDefault()?.Attribute("Id")?.Value
})
.Where (f => Directory.Exists (f.Path));
@@ -400,6 +404,18 @@ namespace Mono.Documentation
typeFormatter = new VBMemberFormatter();
memberFormatter = new VBMemberFormatter();
break;
+ case Consts.CppCliLowCase:
+ typeFormatter = new CppMemberFormatter();
+ memberFormatter = new CppFullMemberFormatter();
+ break;
+ case Consts.CppCxLowCase:
+ typeFormatter = new CppCxMemberFormatter();
+ memberFormatter = new CppCxFullMemberFormatter();
+ break;
+ case Consts.CppWinRtLowCase:
+ typeFormatter = new CppWinRtMemberFormatter();
+ memberFormatter = new CppWinRtFullMemberFormatter();
+ break;
case Consts.FSharpLowCase:
case "fsharp":
typeFormatter = new FSharpMemberFormatter();
@@ -994,13 +1010,13 @@ namespace Mono.Documentation
}
string defaultTitle = "Untitled";
- if (processedAssemblyCount == 1 && assemblies[0] != null)
- {
- var assembly = assemblies[0].Assemblies.FirstOrDefault();
- if (assembly != null)
- defaultTitle = assembly.Name.Name;
- else
- Warning($"Seems to be an issue with assembly group '{assemblies[0].Name}'. There are no assemblies loaded.");
+ if (processedAssemblyCount == 1 && assemblies[0] != null)
+ {
+ var assembly = assemblies[0].Assemblies.FirstOrDefault();
+ if (assembly != null)
+ defaultTitle = assembly.Name.Name;
+ else
+ Warning($"Seems to be an issue with assembly group '{assemblies[0].Name}'. There are no assemblies loaded.");
}
WriteElementInitialText (index.DocumentElement, "Title", defaultTitle);
@@ -1480,8 +1496,9 @@ namespace Mono.Documentation
if (m is TypeDefinition) return false;
string cssig = memberFormatters[0].GetDeclaration (m);
if (cssig == null) return false;
+
string sig = memberFormatters[1].GetDeclaration (m);
- if (seenmembers.ContainsKey (sig)) return false;
+ if (sig==null || seenmembers.ContainsKey (sig)) return false;
// Verify that the member isn't an explicitly implemented
// member of an internal interface, in which case we shouldn't return true.
@@ -2226,13 +2243,13 @@ namespace Mono.Documentation
e.RemoveAll();
foreach (var implementedMember in implementedMembers)
- {
- var value = slashdocFormatter.GetDeclaration(implementedMember);
- WriteElementText(e, "InterfaceMember", value, true);
- }
-
- if (e.ParentNode == null)
- root.AppendChild(e);
+ {
+ var value = slashdocFormatter.GetDeclaration(implementedMember);
+ WriteElementText(e, "InterfaceMember", value, true);
+ }
+
+ if (e.ParentNode == null)
+ root.AppendChild(e);
}
static void AddXmlNode (XmlElement[] relevant, Func<XmlElement, bool> valueMatches, Action<XmlElement> setValue, Func<XmlElement> makeNewNode, MemberReference member)
diff --git a/mdoc/Mono.Documentation/Updater/DocUtils.cs b/mdoc/Mono.Documentation/Updater/DocUtils.cs
index b6eabffe..83543f90 100644
--- a/mdoc/Mono.Documentation/Updater/DocUtils.cs
+++ b/mdoc/Mono.Documentation/Updater/DocUtils.cs
@@ -66,6 +66,14 @@ namespace Mono.Documentation.Updater
propagateStyle ();
}
}
+ public static string GetFormattedTypeName(string name)
+ {
+ int index = name.IndexOf("`", StringComparison.Ordinal);
+ if (index >= 0)
+ return name.Substring(0, index);
+
+ return name;
+ }
public static void AddApiStyle (this XmlNode node, ApiStyle style)
{
string styleString = style.ToString ().ToLowerInvariant ();
@@ -169,8 +177,11 @@ namespace Mono.Documentation.Updater
GetMember (pi.Name)});
}
- public static string GetNamespace (TypeReference type)
+ public static string GetNamespace (TypeReference type, string delimeter = null)
{
+ if (type == null)
+ return string.Empty;
+
if (type.GetElementType ().IsNested)
type = type.GetElementType ();
while (type != null && type.IsNested)
@@ -180,12 +191,17 @@ namespace Mono.Documentation.Updater
string typeNS = type.Namespace;
+ if (!string.IsNullOrEmpty(delimeter))
+ {
+ typeNS = typeNS.Replace(".", delimeter);
+ }
+
// first, make sure this isn't a type reference to another assembly/module
bool isInAssembly = MDocUpdater.IsInAssemblies (type.Module.Name);
if (isInAssembly && !typeNS.StartsWith ("System") && MDocUpdater.HasDroppedNamespace (type))
{
- typeNS = string.Format ("{0}.{1}", MDocUpdater.droppedNamespace, typeNS);
+ typeNS = string.Format ("{0}{1}{2}", MDocUpdater.droppedNamespace, delimeter ?? ".", typeNS);
}
return typeNS;
}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs
new file mode 100644
index 00000000..66774adc
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxFullMemberFormatter.cs
@@ -0,0 +1,572 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using Mono.Cecil;
+using Mono.Documentation.Util;
+
+namespace Mono.Documentation.Updater.Formatters.CppFormatters
+{
+ public class CppCxFullMemberFormatter : CppFullMemberFormatter
+ {
+ public override string Language => Consts.CppCx;
+ protected override string RefTypeModifier => " & ";
+
+ protected readonly IEnumerable<string> ValueClassPropertyTypeAllowed = new List<string>()
+ {
+ "System.String",
+ "Platform.IBox<T>",
+ //fundamental numeric types
+ "System.SByte",
+ "System.Byte",
+ "System.Int16",
+ "System.UInt16",
+ "System.Int32",
+ "System.UInt32",
+ "System.Int64",
+ "System.UInt64",
+ "System.Single",
+ "System.Double",
+ "System.Decimal"
+ };
+
+ protected readonly IEnumerable<string> CustomAttributesFieldTypesAllowed = new List<string>()
+ {
+ "System.Int32",
+ "System.UInt32",
+ "System.Boolean",
+ "System.String",
+ "Windows.Foundation.HResult",
+ "Platform.Type"
+ };
+
+ protected static readonly IEnumerable<string> AllowedFundamentalTypes = new List<string>()
+ {
+ //fundamental numeric types
+ "System.Byte",
+ "System.Int16",
+ "System.UInt16",
+ "System.Int32",
+ "System.UInt32",
+ "System.Int64",
+ "System.UInt64",
+ "System.Single",
+ "System.Double",
+ "System.SByte",
+ //other fundamental types
+ "System.Object",
+ "System.Boolean",
+ "System.Char",
+ "System.Void",
+ "System.String",
+ "System.ValueType",
+ "System.Enum",
+ };
+
+ protected virtual IList<string> GetAllowedTypes()
+ {
+ return new List<string>(AllowedFundamentalTypes)
+ {
+ "System.Delegate",
+ "System.MulticastDelegate",
+ "System.Type",
+ "System.Attribute"
+ };
+
+ }
+ protected readonly IEnumerable<string> CppCxSpecificNamespases = new List<string>()
+ {
+ "Platform",
+ "Platform.Collections",
+ "Platform.Collections.Details",
+ "Platform.Details",
+ "Platform.Metadata",
+ "Platform.Runtime.CompilerServices",
+ "Platform.Runtime.InteropServices",
+ "Windows.Foundation.Collections"
+ };
+
+ protected override StringBuilder AppendNamespace(StringBuilder buf, TypeReference type)
+ {
+ string ns = DocUtils.GetNamespace(type, NestedTypeSeparator);
+ if (GetCppType(type.FullName) == null && !string.IsNullOrEmpty(ns) && ns != "System")
+ buf.Append(ns).Append(NestedTypeSeparator);
+ return buf;
+ }
+
+ protected override string GetCppType(string t)
+ {
+ // make sure there are no modifiers in the type string (add them back before returning)
+ string typeToCompare = t;
+ string[] splitType = null;
+ if (t.Contains(' '))
+ {
+ splitType = t.Split(' ');
+ typeToCompare = splitType[0];
+ }
+
+ switch (typeToCompare)
+ {
+ case "System.Byte": typeToCompare = "byte"; break;
+ case "System.Int16": typeToCompare = "short"; break;
+ case "System.Int32": typeToCompare = "int"; break;
+ case "System.Int64": typeToCompare = "long long"; break;
+
+ case "System.UInt16": typeToCompare = "unsigned short"; break;
+ case "System.UInt32": typeToCompare = "unsigned int"; break;
+ case "System.UInt64": typeToCompare = "unsigned long long"; break;
+
+ case "System.Single": typeToCompare = "float"; break;
+ case "System.Double": typeToCompare = "double"; break;
+ case "System.Boolean": typeToCompare = "bool"; break;
+ case "System.Char": typeToCompare = "char16"; break;
+ case "System.Void": typeToCompare = "void"; break;
+ case "System.String": typeToCompare = "Platform::String"; break;
+ case "System.Object": typeToCompare = "Platform::Object"; break;
+ case "System.Type": typeToCompare = "Platform::Type"; break;
+ case "System.Attribute": typeToCompare = "Platform::Metadata::Attribute"; break;
+ }
+
+ if (splitType != null)
+ {
+ // re-add modreq/modopt if it was there
+ splitType[0] = typeToCompare;
+ typeToCompare = string.Join(" ", splitType);
+ }
+ return typeToCompare == t ? null : typeToCompare;
+ }
+
+ protected override StringBuilder AppendArrayTypeName(StringBuilder buf, TypeReference type,
+ DynamicParserContext context)
+ {
+ buf.Append("Platform::Array <");
+
+ var item = type is TypeSpecification spec ? spec.ElementType : type.GetElementType();
+ _AppendTypeName(buf, item, context);
+ AppendHat(buf, item);
+
+ if (type is ArrayType arrayType)
+ {
+ int rank = arrayType.Rank;
+ if (rank > 1)
+ {
+ buf.AppendFormat(", {0}", rank);
+ }
+ }
+
+ buf.Append(">");
+
+ return buf;
+ }
+
+ protected override string GetTypeDeclaration(TypeDefinition type)
+ {
+ string visibility = GetTypeVisibility(type.Attributes);
+ if (visibility == null)
+ return null;
+
+ StringBuilder buf = new StringBuilder();
+
+ if (!visibility.Contains(":"))
+ {
+ AppendWebHostHiddenAttribute(buf, type);
+ }
+
+ buf.Append(visibility);
+ buf.Append(" ");
+
+ if (visibility.Contains(":"))
+ {
+ AppendWebHostHiddenAttribute(buf, type);
+ }
+
+ CppFullMemberFormatter full = new CppCxFullMemberFormatter();
+
+ if (DocUtils.IsDelegate(type))
+ {
+ buf.Append("delegate ");
+ MethodDefinition invoke = type.GetMethod("Invoke");
+ buf.Append(full.GetNameWithOptions(invoke.ReturnType)).Append(" ");
+ buf.Append(GetNameWithOptions(type, false, false));
+ AppendParameters(buf, invoke, invoke.Parameters);
+ buf.Append(";");
+
+ return buf.ToString();
+ }
+
+ buf.Append(GetTypeKind(type));
+ buf.Append(" ");
+ buf.Append(GetCppType(type.FullName) == null
+ ? GetNameWithOptions(type, false, false)
+ : type.Name);
+
+ if (type.IsAbstract && !type.IsInterface)
+ buf.Append(" abstract");
+ if (type.IsSealed && !DocUtils.IsDelegate(type) && !type.IsValueType)
+ buf.Append(" sealed");
+
+ if (!type.IsEnum)
+ {
+ TypeReference basetype = type.BaseType;
+ if (basetype != null && basetype.FullName == "System.Object" || type.IsValueType) // FIXME
+ basetype = null;
+
+ List<string> interfaceNames;
+ try
+ {
+ //for c++/cx Resolve() can fail as Cecil understands CX types as .net (eg, "System.Attribute" instead of "Platform::Metadata::Attribute")
+ interfaceNames = DocUtils.GetUserImplementedInterfaces(type)
+ .Select(iface => full.GetNameWithOptions(iface, true, false))
+ .OrderBy(s => s)
+ .ToList();
+ }
+ catch
+ {
+ interfaceNames = null;
+ }
+
+ if (basetype != null || interfaceNames?.Count > 0)
+ buf.Append(" : ");
+
+ if (basetype != null)
+ {
+ var appendValue = GetCppType(basetype.FullName);
+ buf.Append(appendValue ?? full.GetNameWithOptions(basetype, true, false));
+ if (interfaceNames?.Count > 0)
+ buf.Append(", ");
+ }
+
+ for (int i = 0; i < interfaceNames?.Count; i++)
+ {
+ if (i != 0)
+ buf.Append(", ");
+ buf.Append(interfaceNames?[i]);
+ }
+
+ }
+
+ return buf.ToString();
+ }
+
+ public void AppendWebHostHiddenAttribute(StringBuilder buf, TypeDefinition typeDef)
+ {
+ //public unsealed ref class needs to be marked with attribute
+ //to ensure that is not visible to UWP apps that are written in JavaScript
+ if (typeDef.IsClass && !typeDef.IsSealed && (typeDef.IsPublic || typeDef.IsNestedPublic) && typeDef.CustomAttributes.All(x => x.GetDeclaringType() != "Windows.Foundation.Metadata.WebHostHiddenAttribute"))
+ {
+ buf.Append("[Windows::Foundation::Metadata::WebHostHidden]").Append(GetLineEnding());
+ }
+ }
+
+ protected override StringBuilder AppendExplisitImplementationMethod(StringBuilder buf, MethodDefinition method)
+ {
+ if(IsExplicitlyImplemented(method))
+ {
+ buf.Append(" = ");
+
+ var interfaceMethodReference = method.Overrides.FirstOrDefault();
+
+ buf.Append(GetTypeNameWithOptions(interfaceMethodReference?.DeclaringType, !AppendHatOnReturn, true))
+ .Append(NestedTypeSeparator);
+ buf.Append(interfaceMethodReference?.Name);
+ }
+ return buf;
+ }
+
+ protected override string AppendSealedModifiers(string modifiersString, MethodDefinition method)
+ {
+ if (!IsExplicitlyImplemented(method))
+ {
+ if (method.IsFinal) modifiersString += " sealed";
+ if (modifiersString == " virtual sealed") modifiersString = "";
+ }
+
+ return modifiersString;
+ }
+
+ private bool IsExplicitlyImplemented(MethodDefinition method)
+ {
+ if (!method.HasOverrides) return false;
+
+ //apply logic for explicit implementation of interface methods
+ var interfaceMethodReference = method.Overrides.FirstOrDefault();
+
+ if (interfaceMethodReference != null
+ //need to filter UWP specific interfaces, generated by default
+ //eg from decompile, public sealed class Class1 : __IClass1PublicNonVirtuals, __IClass1ProtectedNonVirtuals
+ && !Regex.IsMatch(interfaceMethodReference.DeclaringType.Name,
+ $"^.*{method.DeclaringType.Name}.*Virtual.*$"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public override bool IsSupported(TypeReference tref)
+ {
+ if (HasNestedClassesDuplicateNames(tref))
+ return false;
+
+ var allowedTypes = GetAllowedTypes();
+
+ //no support of jagged arrays
+ if (tref is ArrayType)
+ {
+ var typeOfArray= tref is TypeSpecification spec ? spec.ElementType : tref.GetElementType();
+ if (typeOfArray is ArrayType)
+ {
+ return false;
+ }
+
+ if (allowedTypes.Contains(typeOfArray.FullName) ||
+ CppCxSpecificNamespases.Contains(typeOfArray.Namespace))
+ {
+ return true;
+ }
+ }
+
+ if (allowedTypes.Contains(tref.FullName.Split(' ')[0]) || CppCxSpecificNamespases.Contains(tref.Namespace))
+ {
+ return true;
+ }
+
+ var ns = DocUtils.GetNamespace(tref);
+
+ var typedef = tref.Resolve();
+ if (typedef != null)
+ {
+ if (DocUtils.IsDelegate(typedef))
+ {
+ if (typedef.HasGenericParameters && typedef.IsPublic)
+ //generic delegates cannot be declared as public
+ return false;
+
+ return
+ //check types of delegate signature
+ IsSupported(typedef.GetMethod("Invoke"))
+ //check type
+ && base.IsSupported(tref) && ! (ns.StartsWith("System.") || ns.StartsWith("System"));
+ }
+
+ if (typedef.IsInterface && typedef.HasGenericParameters &&
+ typedef.GenericParameters.Any(x => x.HasConstraints
+ || x.HasReferenceTypeConstraint
+ || x.HasDefaultConstructorConstraint
+ || x.HasNotNullableValueTypeConstraint)
+ )
+ {
+ //generic interface - Type parameters cannot be constrained
+ return false;
+ }
+
+ if (HasUnsupportedParent(typedef))
+ {
+ return false;
+ }
+
+ var typeVisibility = typedef.Attributes & TypeAttributes.VisibilityMask;
+
+ if (typeVisibility == TypeAttributes.Public
+ //all public types, including those in your own code, must be declared in a namespace
+ && (string.IsNullOrEmpty(ns)
+ //public standard C++ types are not allowed
+ || ns.StartsWith("std") || ns.StartsWith("cli"))
+ )
+ {
+ return false;
+ }
+
+ if (typeVisibility == TypeAttributes.NestedPublic
+ && (typedef.IsEnum || typedef.IsClass)
+ )
+ {
+ //no support of nested public classes/enums
+ return false;
+ }
+
+ if (typedef.IsClass && typeVisibility == TypeAttributes.Public && typedef.HasGenericParameters)
+ {
+ //Public ref classes that have type parameters (generics) are not permitted.
+ return false;
+ }
+
+ if (typedef.IsClass && typeVisibility == TypeAttributes.Public)
+ {
+ //A public ref class that has a public constructor must also be declared as sealed
+ //to prevent further derivation through the application binary interface (ABI).
+ if (typedef.Methods.Any(x => x.IsConstructor && x.IsPublic) && !typedef.IsSealed)
+ {
+ return false;
+ }
+ }
+
+ if (typedef.IsValueType && !typedef.IsEnum && typedef.Fields.Any(x =>
+ !ValueClassPropertyTypeAllowed.Contains(x.FieldType.FullName) && !x.FieldType.Resolve().IsEnum))
+ {
+ //A value struct or value class can contain as fields only
+ //fundamental numeric types, enum classes, Platform::String^, or Platform::IBox <T>^
+ return false;
+ }
+
+
+ bool condition;
+ try
+ {
+ //custom attribute can contain only public fields and only with allowed types or enums
+ condition = IsCustomAttribute(typedef)
+ && (typedef.Fields.Any(z =>
+ !CustomAttributesFieldTypesAllowed.Contains(z.FieldType.FullName)
+ && !z.FieldType.Resolve().IsEnum
+ )
+ || typedef.Properties.Count != 0
+ || typedef.Methods.Count(x => !x.IsConstructor) != 0
+ || typedef.Events.Count != 0
+ );
+ }
+ catch
+ {
+ condition = false;
+ }
+
+ if (condition)
+ {
+ //custom attribute can contain only public fields and only with allowed types or enums
+ return false;
+ }
+ }
+
+ //cannot support .Net types
+ return !ns.StartsWith("System.") && !ns.Equals("System") && base.IsSupported(tref);
+ }
+
+ protected bool HasUnsupportedParent(TypeDefinition typedef)
+ {
+ var collect = new List<TypeDefinition>();
+ TypeReference baseTypeReference = typedef.BaseType;
+ TypeDefinition basetypeDefenition = null;
+
+ var allowedTypes = GetAllowedTypes();
+
+ try
+ {
+ //iterate through all classes in in inheritance hierarhy to exclude usage of .net types
+ basetypeDefenition = baseTypeReference?.Resolve();
+ while (basetypeDefenition != null)
+ {
+ if (allowedTypes.Contains(basetypeDefenition.FullName) || basetypeDefenition.BaseType == null)
+ {
+ break;
+ }
+
+ collect.Add(basetypeDefenition);
+
+ //needs to call Resolve to grab all base classes
+ basetypeDefenition = basetypeDefenition.BaseType?.Resolve();
+ }
+ }
+ catch (Exception)
+ {
+ //for c++/cx Resolve() can fail as Cecil understands types as .net (eg, "System.Attribute" instead of "Platform::Metadata::Attribute")
+ //needs to ignore those errors
+ baseTypeReference = basetypeDefenition?.BaseType ?? baseTypeReference;
+ }
+
+ if (collect.Any(x => DocUtils.GetNamespace(x).StartsWith("System.") || DocUtils.GetNamespace(x).Equals("System"))
+ || !allowedTypes.Contains(baseTypeReference?.FullName)
+ && (
+ DocUtils.GetNamespace(baseTypeReference).StartsWith("System.")
+ || DocUtils.GetNamespace(baseTypeReference).Equals("System")
+ )
+ )
+ //can only be Windows Runtime types(no support for .net types)
+ return true;
+
+ try
+ {
+ IEnumerable<TypeReference> interfaceNames = DocUtils.GetUserImplementedInterfaces(typedef).ToList();
+
+ if (interfaceNames.Any(x => DocUtils.GetNamespace(x).StartsWith("System.") || DocUtils.GetNamespace(x).Equals("System")))
+ {
+ //can only be Windows Runtime types(no support for .net types)
+ return true;
+ }
+ }
+ catch
+ {
+ //for c++/cx Resolve() can fail as Cecil understands types as .net (eg, "System.Attribute" instead of "Platform::Metadata::Attribute")
+ //needs to ignore those errors
+ }
+
+ return false;
+ }
+
+ public override bool IsSupportedField(FieldDefinition fdef)
+ {
+ bool isEnumFieldType;
+ try
+ {
+ var typedef = fdef.FieldType.Resolve();
+ isEnumFieldType = typedef.IsEnum;
+ }
+ catch
+ {
+ //for c++/cx Resolve() can fail as Cecil understands types as .net (eg, "System.Attribute" instead of "Platform::Metadata::Attribute")
+ //needs to ignore those errors
+ isEnumFieldType = false;
+ }
+
+ if (IsCustomAttribute(fdef.DeclaringType))
+ {
+ return !CustomAttributesFieldTypesAllowed.Contains(fdef.FieldType.FullName) ||
+ !isEnumFieldType;
+ }
+
+ if (fdef.IsPublic && fdef.DeclaringType.IsClass && !fdef.DeclaringType.IsValueType && !fdef.DeclaringType.IsEnum)
+ {
+ //Public fields are not allowed in ref class
+ return false;
+ }
+
+ //todo: no const members - which can be??
+ //const member functions + pointers
+
+ return base.IsSupportedField(fdef);
+ }
+
+ public override bool IsSupportedProperty(PropertyDefinition pdef)
+ {
+ var propVisibility = GetPropertyVisibility(pdef, out _, out _);
+ if ((propVisibility.Contains("public:")
+ || propVisibility.Contains("protected:"))
+ && pdef.Parameters.Count > 0)
+ //no support of public indexed property
+ return false;
+
+ return base.IsSupportedProperty(pdef);
+ }
+
+ public override bool IsSupportedMethod(MethodDefinition mdef)
+ {
+ if (mdef.Parameters.Any(IsParamsParameter))
+ {
+ return false;
+ }
+
+ return base.IsSupportedMethod(mdef);
+ }
+
+ private bool IsCustomAttribute(TypeDefinition typedef)
+ {
+ var containingTypeNamespace = DocUtils.GetNamespace(typedef);
+
+ if (typedef.BaseType?.FullName == "System.Attribute" && !containingTypeNamespace.StartsWith("System.") && !containingTypeNamespace.StartsWith("System"))
+ {
+ return true;
+ }
+
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxMemberFormatter.cs
new file mode 100644
index 00000000..8aa206ca
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppCxMemberFormatter.cs
@@ -0,0 +1,13 @@
+using System.Text;
+using Mono.Cecil;
+
+namespace Mono.Documentation.Updater.Formatters.CppFormatters
+{
+ public class CppCxMemberFormatter : CppCxFullMemberFormatter
+ {
+ protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
+ {
+ return buf;
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
new file mode 100644
index 00000000..025191bd
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppFullMemberFormatter.cs
@@ -0,0 +1,1098 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Text.RegularExpressions;
+using Mono.Cecil;
+using Mono.Collections.Generic;
+using Mono.Documentation.Util;
+
+namespace Mono.Documentation.Updater.Formatters.CppFormatters
+{
+ public class CppFullMemberFormatter : MemberFormatter
+ {
+ protected virtual bool AppendHatOnReturn => true;
+
+ public override string Language => Consts.CppCli;
+
+ protected override string RefTypeModifier => " %";
+
+ protected virtual string HatModifier => " ^";
+
+ protected override string NestedTypeSeparator => "::";
+
+ protected virtual IEnumerable<string> NoHatTypes => new List<string>()
+ {
+ "System.Void",
+ "Mono.Cecil.GenericParameter"
+ };
+
+ protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
+ {
+ string ns = DocUtils.GetNamespace(type, NestedTypeSeparator);
+ if (GetCppType(type.FullName) == null && !string.IsNullOrEmpty(ns) && ns != "System")
+ buf.Append(ns).Append(NestedTypeSeparator);
+ return buf;
+ }
+
+ protected virtual string GetCppType (string t)
+ {
+ // make sure there are no modifiers in the type string (add them back before returning)
+ string typeToCompare = t;
+ string[] splitType = null;
+ if (t.Contains (' '))
+ {
+ splitType = t.Split (' ');
+ typeToCompare = splitType[0];
+ //for (int i = 1; i < splitType.Length; i++)
+ //{
+ // var str = splitType[i];
+ // if (str == "modopt(System.Runtime.CompilerServices.IsLong)" && typeToCompare == "System.Int32")
+ // return "long";
+ // if (str == "modopt(System.Runtime.CompilerServices.IsSignUnspecifiedByte)" && typeToCompare == "System.SByte")
+ // return "char";
+ // //if (typeToCompare == "System.Byte")
+ // // return "unsigned char";
+ // //if (typeToCompare == "System.SByte")
+ // // return "signed char";
+ //}
+
+ foreach (var str in splitType)
+ {
+ if (str == "modopt(System.Runtime.CompilerServices.IsLong)" && typeToCompare == "System.Int32")
+ return "long";
+ if (str == "modopt(System.Runtime.CompilerServices.IsSignUnspecifiedByte)" && typeToCompare == "System.SByte")
+ return "char";
+ //if (typeToCompare == "System.Byte")
+ // return "unsigned char";
+ //if (typeToCompare == "System.SByte")
+ // return "signed char";
+ }
+
+ }
+
+ switch (typeToCompare)
+ {
+ case "System.Byte": typeToCompare = "System::Byte"; break;
+ case "System.SByte": typeToCompare = "System::SByte"; break;
+ case "System.Int16": typeToCompare = "short"; break;
+ case "System.Int32": typeToCompare = "int"; break;
+ case "System.Int64": typeToCompare = "long"; break;
+
+ case "System.UInt16": typeToCompare = "System::UInt16"; break;
+ case "System.UInt32": typeToCompare = "System::UInt32"; break;
+ case "System.UInt64": typeToCompare = "System::UInt64"; break;
+
+ case "System.Single": typeToCompare = "float"; break;
+ case "System.Double": typeToCompare = "double"; break;
+ case "System.Decimal": typeToCompare = "System::Decimal"; break;
+ case "System.Boolean": typeToCompare = "bool"; break;
+ case "System.Char": typeToCompare = "char"; break;
+ case "System.Void": typeToCompare = "void"; break;
+ case "System.String": typeToCompare = "System::String"; break;
+ case "System.Object": typeToCompare = "System::Object"; break;
+ }
+
+ if (splitType != null)
+ {
+ // re-add modreq/modopt if it was there
+ splitType[0] = typeToCompare;
+ typeToCompare = string.Join (" ", splitType);
+ }
+ return typeToCompare == t ? null : typeToCompare;
+ }
+
+ protected override StringBuilder AppendTypeName (StringBuilder buf, TypeReference type, DynamicParserContext context)
+ {
+ string typeFullName = type.FullName;
+ if (!typeFullName.StartsWith ("System."))
+ {
+ return base.AppendTypeName(buf, type, context);
+ }
+
+ string cppType = GetCppType(typeFullName);
+ if (cppType != null)
+ {
+ return buf.Append(cppType);
+ }
+
+ return base.AppendTypeName(buf, type, context);
+ }
+
+ public override string GetDeclaration(TypeReference tref)
+ {
+ if (!IsSupported(tref))
+ return null;
+
+ TypeDefinition def = tref.Resolve();
+ return def != null
+ ? GetTypeDeclaration(def)
+ : GetTypeNameWithOptions(tref, !AppendHatOnReturn, false);
+ }
+
+ protected override string GetTypeDeclaration (TypeDefinition type)
+ {
+ string visibility = GetTypeVisibility (type.Attributes);
+ if (visibility == null)
+ return null;
+
+ StringBuilder buf = new StringBuilder ();
+
+ var genericParamList = GetTypeSpecifiGenericParameters(type);
+
+ if (!visibility.Contains(":"))
+ {
+ AppendGenericItem(buf, genericParamList);
+ AppendGenericTypeConstraints(buf, type);
+
+ }
+
+ buf.Append(visibility);
+ buf.Append(" ");
+
+ if (visibility.Contains(":"))
+ {
+ AppendGenericItem(buf, genericParamList);
+ AppendGenericTypeConstraints(buf, type);
+ }
+
+ CppFullMemberFormatter full = new CppFullMemberFormatter ();
+
+ if (DocUtils.IsDelegate (type))
+ {
+ buf.Append("delegate ");
+ MethodDefinition invoke = type.GetMethod ("Invoke");
+ buf.Append(full.GetNameWithOptions(invoke.ReturnType));
+ buf.Append(" ");
+ buf.Append(GetNameWithOptions(type, false, false));
+ AppendParameters (buf, invoke, invoke.Parameters);
+ buf.Append(";");
+
+ return buf.ToString ();
+ }
+
+ buf.Append(GetTypeKind (type));
+ buf.Append(" ");
+ buf.Append(GetCppType(type.FullName) == null
+ ? GetNameWithOptions(type, false, false)
+ : type.Name);
+
+ if (type.IsAbstract && !type.IsInterface)
+ buf.Append(" abstract");
+ if (type.IsSealed && !DocUtils.IsDelegate(type) && !type.IsValueType)
+ buf.Append(" sealed");
+
+ if (!type.IsEnum)
+ {
+ TypeReference basetype = type.BaseType;
+ if (basetype != null && basetype.FullName == "System.Object" || type.IsValueType) // FIXME
+ basetype = null;
+
+ List<string> interfaceNames = DocUtils.GetUserImplementedInterfaces (type)
+ .Select (iface => full.GetNameWithOptions(iface, true, false))
+ .OrderBy (s => s)
+ .ToList ();
+
+ if (basetype != null || interfaceNames.Count > 0)
+ buf.Append(" : ");
+
+ if (basetype != null)
+ {
+ buf.Append(full.GetNameWithOptions(basetype, true, false));
+ if (interfaceNames.Count > 0)
+ buf.Append(", ");
+ }
+
+ for (int i = 0; i < interfaceNames.Count; i++)
+ {
+ if (i != 0)
+ buf.Append(", ");
+ buf.Append(interfaceNames[i]);
+ }
+ }
+
+ return buf.ToString ();
+ }
+
+ protected virtual IList<GenericParameter> GetTypeSpecifiGenericParameters(TypeDefinition type)
+ {
+ var returnItems = new Collection<GenericParameter>();
+
+ List<TypeReference> decls = DocUtils.GetDeclaringTypes(type);
+ List<TypeReference> genArgs = GetGenericArguments(type);
+ int argIndex = 0;
+ int previouslyAppliedCount = 0;
+
+ var lastItem = decls.Last();
+
+ foreach (var decl in decls)
+ {
+ TypeReference declDef = decl.Resolve() ?? decl;
+
+ int argumentCount = DocUtils.GetGenericArgumentCount(declDef);
+ int countLeftUnupplied = argumentCount - previouslyAppliedCount;
+ previouslyAppliedCount = argumentCount;
+
+ if (decl != lastItem)
+ {
+ argIndex = argIndex + argumentCount;
+ }
+
+ if (countLeftUnupplied > 0 && decl==lastItem)
+ {
+
+ for (int i = 0; i < countLeftUnupplied; ++i)
+ {
+ returnItems.Add((GenericParameter)genArgs[argIndex++]);
+ }
+ }
+ }
+
+ return returnItems;
+ }
+
+ protected virtual string GetTypeKind (TypeDefinition t)
+ {
+ if (t.IsEnum)
+ return "enum class";
+ if (t.IsValueType)
+ //pure struct is unmanaged so cannot be used in managed context
+ return "value class";
+ if (t.IsClass || t.FullName == "System.Enum")
+ return "ref class";
+ if (t.IsInterface)
+ return "interface class";
+ throw new ArgumentException (t.FullName);
+ }
+
+ protected virtual string GetTypeNameWithOptions(TypeReference type, bool appendHat, bool appendGeneric = true)
+ {
+ var typeName = GetTypeName(type, null, appendGeneric);
+ var hatTypeName =
+ !type.IsByReference && !type.IsPointer
+ ? AppendHat(typeName, type, appendHat)
+ : typeName;
+
+ return hatTypeName;
+ }
+
+ protected virtual string AppendHat(string stringToApply, TypeReference type, bool appendHat = true)
+ {
+ var buffer = new StringBuilder(stringToApply);
+ AppendHat(buffer, type, appendHat);
+
+ return buffer.ToString();
+ }
+
+ protected virtual StringBuilder AppendHat(StringBuilder buffer, TypeReference type, bool appendHat = true)
+ {
+ //no hat for value type with modopt (like short, which is represented as Int32 with modopt value )
+ if (!type.IsArray && type.GetElementType().IsValueType && type.FullName.Contains("modopt"))
+ return buffer;
+
+ if (type is PointerType || type is ByReferenceType)
+ {
+ var typeToCheck = type is TypeSpecification
+ ? ((TypeSpecification)type).ElementType
+ :type.GetElementType();
+ if (!typeToCheck.IsValueType
+ && !typeToCheck.IsPointer
+ && !NoHatTypes.Contains(typeToCheck.FullName)
+ //check for generic type
+ && !NoHatTypes.Contains(typeToCheck.GetType().FullName)
+ )
+ {
+ buffer.Append(HatModifier);
+ }
+ return buffer;
+ }
+
+ if ( !type.IsValueType
+ //is checked to skip hat for type declaration
+ && appendHat
+ //check for standart types
+ && !NoHatTypes.Contains(type.FullName)
+ //check for generic type
+ && !NoHatTypes.Contains(type.GetType().FullName)
+
+ )
+ {
+ //add handler for reference types to have managed context
+ buffer.Append(HatModifier);
+ }
+
+ return buffer;
+ }
+
+ protected virtual string GetTypeVisibility (TypeAttributes ta)
+ {
+ switch (ta & TypeAttributes.VisibilityMask)
+ {
+ case TypeAttributes.Public:
+ return "public";
+ case TypeAttributes.NestedPublic:
+ return "public:";
+
+ case TypeAttributes.NestedFamORAssem:
+ return "public protected";
+ case TypeAttributes.NestedFamily:
+ return "protected:";
+
+ default:
+ return null;
+ }
+ }
+
+ protected override StringBuilder AppendGenericTypeConstraints (StringBuilder buf, TypeReference type)
+ {
+ if (type.GenericParameters.Count == 0)
+ return buf;
+ return AppendConstraints (buf, type.GenericParameters);
+ }
+
+ private StringBuilder AppendConstraints (StringBuilder buf, IList<GenericParameter> genArgs)
+ {
+ foreach (GenericParameter genArg in genArgs)
+ {
+ GenericParameterAttributes attrs = genArg.Attributes;
+ IList<TypeReference> constraints = genArg.Constraints;
+ if (attrs == GenericParameterAttributes.NonVariant && constraints.Count == 0)
+ continue;
+
+ bool isref = (attrs & GenericParameterAttributes.ReferenceTypeConstraint) != 0;
+ bool isvt = (attrs & GenericParameterAttributes.NotNullableValueTypeConstraint) != 0;
+ bool isnew = (attrs & GenericParameterAttributes.DefaultConstructorConstraint) != 0;
+ bool comma = false;
+
+ if (!isref && !isvt && !isnew && constraints.Count == 0)
+ continue;
+ buf.Append(" where ").Append(genArg.Name).Append(" : ");
+ if (isref)
+ {
+ buf.Append("class");
+ comma = true;
+ }
+ else if (isvt)
+ {
+ buf.Append("value class");
+ comma = true;
+ }
+ if (constraints.Count > 0 && !isvt)
+ {
+ if (comma)
+ buf.Append(", ");
+ buf.Append(GetTypeName (constraints[0]));
+ for (int i = 1; i < constraints.Count; ++i)
+ buf.Append(", ").Append(GetTypeName (constraints[i]));
+ }
+ if (isnew && !isvt)
+ {
+ if (comma)
+ buf.Append(", ");
+ buf.Append("gcnew()");
+ }
+ }
+ return buf;
+ }
+
+ protected override string GetConstructorDeclaration (MethodDefinition constructor)
+ {
+ StringBuilder buf = new StringBuilder ();
+ AppendVisibility (buf, constructor);
+
+
+ buf.Append(' ');
+ base.AppendTypeName(buf, constructor.DeclaringType.Name);
+ AppendParameters(buf, constructor, constructor.Parameters);
+ buf.Append(';');
+
+ return buf.ToString ();
+ }
+
+ protected override string GetMethodDeclaration (MethodDefinition method)
+ {
+ if (method.HasCustomAttributes && method.CustomAttributes.Any(
+ ca => ca.GetDeclaringType() == "System.Diagnostics.Contracts.ContractInvariantMethodAttribute"))
+ return null;
+
+ // Special signature for destructors.
+ if (method.Name == "Finalize" && method.Parameters.Count == 0)
+ return GetFinalizerName(method);
+
+ StringBuilder buf = new StringBuilder();
+
+ AppendVisibility(buf, method);
+ AppendGenericMethod(buf, method);
+ AppendGenericMethodConstraints(buf, method);
+
+ if (DocUtils.IsExtensionMethod(method))
+ {
+ //no notion of Extension method; needs to mark with attribute and call as standard static method
+ buf.Append("[System::Runtime::CompilerServices::Extension]").Append(GetLineEnding());
+ }
+
+ AppendModifiers(buf, method);
+
+ if (buf.Length != 0)
+ buf.Append(" ");
+
+ buf.Append(GetTypeNameWithOptions(method.ReturnType, AppendHatOnReturn)).Append(" ");
+
+ AppendMethodName(buf, method);
+ AppendParameters(buf, method, method.Parameters);
+ AppendExplisitImplementationMethod(buf, method);
+
+ return buf.Append(";").ToString();
+ }
+
+ protected virtual StringBuilder AppendExplisitImplementationMethod(StringBuilder buf, MethodDefinition method)
+ {
+ if (method.HasOverrides)
+ {
+ //apply logic for explicit implementation om interface methods
+ var interfaceMethodReference = method.Overrides.FirstOrDefault();
+ buf.Append(" = ");
+ buf.Append(GetTypeNameWithOptions(interfaceMethodReference?.DeclaringType, !AppendHatOnReturn))
+ .Append(NestedTypeSeparator);
+ buf.Append(interfaceMethodReference?.Name);
+ }
+ return buf;
+ }
+
+ protected override StringBuilder AppendMethodName(StringBuilder buf, MethodDefinition method)
+ {
+ if (!method.Name.StartsWith("op_", StringComparison.Ordinal))
+ return base.AppendMethodName(buf, method);
+
+ // this is an operator
+ switch (method.Name)
+ {
+ case "op_Implicit":
+ case "op_Explicit":
+ buf.Length--; // remove the last space, which assumes a member name is coming
+ return buf;
+ case "op_Addition":
+ case "op_UnaryPlus":
+ return buf.Append("operator +");
+ case "op_Subtraction":
+ case "op_UnaryNegation":
+ return buf.Append("operator -");
+ case "op_Division":
+ return buf.Append("operator /");
+ case "op_Multiply":
+ return buf.Append("operator *");
+ case "op_Modulus":
+ return buf.Append("operator %");
+ case "op_BitwiseAnd":
+ return buf.Append("operator &");
+ case "op_BitwiseOr":
+ return buf.Append("operator |");
+ case "op_ExclusiveOr":
+ return buf.Append("operator ^");
+ case "op_LeftShift":
+ return buf.Append("operator <<");
+ case "op_RightShift":
+ return buf.Append("operator >>");
+ case "op_LogicalNot":
+ return buf.Append("operator !");
+ case "op_OnesComplement":
+ return buf.Append("operator ~");
+ case "op_Decrement":
+ return buf.Append("operator --");
+ case "op_Increment":
+ return buf.Append("operator ++");
+ case "op_True":
+ return buf.Append("operator true");
+ case "op_False":
+ return buf.Append("operator false");
+ case "op_Equality":
+ return buf.Append("operator ==");
+ case "op_Inequality":
+ return buf.Append("operator !=");
+ case "op_LessThan":
+ return buf.Append("operator <");
+ case "op_LessThanOrEqual":
+ return buf.Append("operator <=");
+ case "op_GreaterThan":
+ return buf.Append("operator >");
+ case "op_GreaterThanOrEqual":
+ return buf.Append("operator >=");
+ default:
+ return base.AppendMethodName(buf, method);
+ }
+
+ }
+
+ protected override StringBuilder AppendGenericMethodConstraints (StringBuilder buf, MethodDefinition method)
+ {
+ if (method.GenericParameters.Count == 0)
+ return buf;
+ return AppendConstraints (buf, method.GenericParameters);
+ }
+
+ protected override StringBuilder AppendGenericType(StringBuilder buf, TypeReference type, DynamicParserContext context, bool appendGeneric = true)
+ {
+ List<TypeReference> decls = DocUtils.GetDeclaringTypes(
+ type is GenericInstanceType ? type.GetElementType() : type);
+ List<TypeReference> genArgs = GetGenericArguments(type);
+ int argIndex = 0;
+ int previouslyAppliedCount = 0;
+ bool insertNested = false;
+ foreach (var decl in decls)
+ {
+ TypeReference declDef;
+ try
+ {
+ declDef = decl.Resolve();
+ }
+ catch
+ {
+ //Resolve() can fail as sometimes Cecil understands types as .net
+ //needs to ignore those errors
+ declDef = decl;
+ }
+
+ if (insertNested)
+ {
+ buf.Append(NestedTypeSeparator);
+ }
+ insertNested = true;
+ AppendTypeName(buf, declDef, context);
+ int argumentCount = DocUtils.GetGenericArgumentCount(declDef);
+ int countLeftUnapplied = argumentCount - previouslyAppliedCount;
+ previouslyAppliedCount = argumentCount;
+ var lastItem = decls.Last();
+ if (countLeftUnapplied > 0
+ && (appendGeneric
+ //this is to add generic syntax for parent classes in declaration of nested class
+ //eg, ref class MyList<T>::Helper -> needs to add <T> to MyList class
+ || decls.Count>=2 && decl != lastItem)
+ )
+ {
+ buf.Append(GenericTypeContainer[0]);
+ var origState = MemberFormatterState;
+ MemberFormatterState = MemberFormatterState.WithinGenericTypeParameters;
+
+ var item = genArgs[argIndex++];
+ _AppendTypeName(buf, item, context);
+ if (declDef.GenericParameters.All(x => x.FullName != item.FullName))
+ {
+ AppendHat(buf, item, AppendHatOnReturn);
+ }
+
+ for (int i = 1; i < countLeftUnapplied; ++i)
+ {
+ var newItem = genArgs[argIndex++];
+ _AppendTypeName(buf.Append(", "), newItem, context);
+ if (declDef.GenericParameters.All(x => x.FullName != newItem.FullName))
+ {
+ //add hat only for non-generic types
+ AppendHat(buf, newItem);
+ }
+ }
+ MemberFormatterState = origState;
+ buf.Append(GenericTypeContainer[1]);
+ }
+ }
+ return buf;
+ }
+
+ protected override string GetFinalizerName (MethodDefinition method)
+ {
+ //~classname() { } // destructor
+ //!classname() { } // finalizer
+ return "!" + method.DeclaringType.Name + " ()";
+ }
+
+ protected override StringBuilder AppendVisibility (StringBuilder buf, MethodDefinition method)
+ {
+ if (method == null)
+ return buf;
+ if (method.IsPublic)
+ return buf.Append ("public:").Append(GetLineEnding());
+ if (method.IsFamily )
+ return buf.Append ("protected:").Append(GetLineEnding());
+ if(method.IsFamilyOrAssembly)
+ return buf.Append("protected public:").Append(GetLineEnding());
+ return buf;
+ }
+
+ protected override StringBuilder AppendModifiers (StringBuilder buf, MethodDefinition method)
+ {
+ string modifiers = String.Empty;
+ if (method.IsStatic) modifiers += " static";
+ if (method.IsVirtual && !method.IsAbstract)
+ {
+ if ((method.Attributes & MethodAttributes.NewSlot) != 0) modifiers += " virtual";
+ else modifiers += " override";
+ }
+ TypeDefinition declType = method.DeclaringType;
+ if (method.IsAbstract && !declType.IsInterface) modifiers += " abstract";
+
+ modifiers = AppendSealedModifiers(modifiers, method);
+
+ switch (method.Name)
+ {
+ case "op_Implicit":
+ modifiers += " operator";
+ break;
+ case "op_Explicit":
+ modifiers += " explicit operator";
+ break;
+ }
+
+ return buf.Append (modifiers);
+ }
+
+ protected virtual string AppendSealedModifiers(string modifiersString, MethodDefinition method)
+ {
+ //no need to apply sealed here as virtual keyword is used for interface implementation even for sealed classes
+ return modifiersString;
+ }
+
+ protected override StringBuilder AppendGenericMethod (StringBuilder buf, MethodDefinition method)
+ {
+ if (method.IsGenericMethod ())
+ {
+ IList<GenericParameter> args = method.GenericParameters;
+ AppendGenericItem(buf, args);
+ }
+ return buf;
+ }
+
+ protected virtual StringBuilder AppendGenericItem(StringBuilder buf, IList<GenericParameter> args)
+ {
+ if (args!=null && args.Any())
+ {
+ buf.Append("generic <typename ");
+ buf.Append(args[0].Name);
+ for (int i = 1; i < args.Count; ++i)
+ buf.Append(", typename ").Append(args[i].Name);
+ buf.Append(">");
+ buf.Append(GetLineEnding());
+ }
+ return buf;
+ }
+
+ protected override StringBuilder AppendParameters (StringBuilder buf, MethodDefinition method, IList<ParameterDefinition> parameters)
+ {
+ return AppendParameters (buf, parameters, '(', ')');
+ }
+
+ private StringBuilder AppendParameters (StringBuilder buf,IList<ParameterDefinition> parameters, char? begin, char? end)
+ {
+ buf.Append (begin);
+
+ if (parameters.Count > 0)
+ {
+ AppendParameter (buf, parameters[0]);
+ for (int i = 1; i < parameters.Count; ++i)
+ {
+ buf.Append (", ");
+ AppendParameter (buf, parameters[i]);
+ }
+ }
+
+ return buf.Append (end);
+ }
+
+ protected virtual StringBuilder AppendParameter (StringBuilder buf, ParameterDefinition parameter)
+ {
+ if (parameter.ParameterType is ByReferenceType)
+ {
+ if (parameter.IsOut)
+ {
+ //no notion of out -> mark with attribute to distinguish in other languages
+ buf.Append("[Runtime::InteropServices::Out] ");
+ }
+ }
+
+ if (IsParamsParameter(parameter))
+ buf.AppendFormat ("... ");
+
+ buf.Append(GetTypeNameWithOptions(parameter.ParameterType, AppendHatOnReturn)).Append(" ");
+ buf.Append(parameter.Name);
+
+ return buf;
+ }
+
+ protected bool IsParamsParameter(ParameterDefinition parameter)
+ {
+ if (parameter.HasCustomAttributes)
+ {
+ var isParams = parameter.CustomAttributes.Any(ca => ca.AttributeType.Name == "ParamArrayAttribute");
+ if (isParams)
+ return true;
+ }
+ return false;
+ }
+
+ protected override StringBuilder AppendArrayModifiers(StringBuilder buf, ArrayType array)
+ {
+ return buf;
+ }
+
+ protected override StringBuilder AppendArrayTypeName(StringBuilder buf, TypeReference type, DynamicParserContext context)
+ {
+ buf.Append("cli::array <");
+
+ var item = type is TypeSpecification spec ? spec.ElementType : type.GetElementType();
+ _AppendTypeName(buf, item, context);
+ AppendHat(buf, item);
+
+ if (type is ArrayType arrayType)
+ {
+ int rank = arrayType.Rank;
+ if (rank > 1)
+ {
+ buf.AppendFormat(", {0}", rank);
+ }
+ }
+
+ buf.Append(">");
+
+ return buf;
+ }
+
+ protected override StringBuilder AppendRefTypeName(StringBuilder buf, TypeReference type, DynamicParserContext context)
+ {
+ TypeSpecification spec = type as TypeSpecification;
+ _AppendTypeName(buf, spec != null ? spec.ElementType : type.GetElementType(), context);
+ AppendHat(buf, type);
+ buf.Append(RefTypeModifier);
+
+ return buf;
+ }
+
+ protected override StringBuilder AppendPointerTypeName(StringBuilder buf, TypeReference type, DynamicParserContext context)
+ {
+ TypeSpecification spec = type as TypeSpecification;
+ _AppendTypeName(buf, spec != null ? spec.ElementType : type.GetElementType(), context);
+ AppendHat(buf, type);
+ buf.Append(PointerModifier);
+ return buf;
+ }
+
+ protected override string GetPropertyDeclaration (PropertyDefinition property)
+ {
+ var propVisib = GetPropertyVisibility(property, out var getVisible, out var setVisible);
+
+ var buf=new StringBuilder();
+ buf.Append(propVisib);
+
+ // Pick an accessor to use for static/virtual/override/etc. checks.
+ var method = property.SetMethod ?? property.GetMethod;
+
+ string modifiers = String.Empty;
+ if (method.IsStatic) modifiers += " static";
+ if (method.IsVirtual && !method.IsAbstract)
+ {
+ if (((method.Attributes & MethodAttributes.SpecialName) != 0))
+ modifiers += " virtual";
+ else
+ modifiers += " override";
+ }
+ TypeDefinition declDef = (TypeDefinition)method.DeclaringType;
+ if (method.IsAbstract && !declDef.IsInterface)
+ modifiers += " abstract";
+ if (method.IsFinal)
+ modifiers += " sealed";
+ if (modifiers == " virtual sealed")
+ modifiers = "";
+ buf.Append(modifiers).Append(' ').Append("property ");
+
+ var typeName = GetTypeNameWithOptions(property.PropertyType, AppendHatOnReturn);
+
+ buf.Append(typeName).Append(' ');
+
+ IEnumerable<MemberReference> defs = property.DeclaringType.GetDefaultMembers();
+ string propertyName = property.Name;
+ foreach (MemberReference mi in defs)
+ {
+ if (mi == property)
+ {
+ propertyName = "default";
+ break;
+ }
+ }
+ buf.Append(propertyName == "default" ? propertyName : DocUtils.GetPropertyName(property));
+
+ bool hasParams=false;
+ if (property.Parameters.Count != 0)
+ {
+ hasParams = true;
+ buf.Append('[');
+ buf.Append(GetTypeNameWithOptions(property.Parameters[0].ParameterType, AppendHatOnReturn));
+ for (int i = 1; i < property.Parameters.Count; ++i)
+ {
+ buf.Append(", ");
+ buf.Append(GetTypeNameWithOptions(property.Parameters[i].ParameterType, AppendHatOnReturn));
+ }
+ buf.Append(']');
+ }
+
+ buf.Append(" { ");
+ if (getVisible != null)
+ {
+ if (getVisible != propVisib)
+ buf.Append(' ').Append(getVisible);
+ buf.AppendFormat("{0} get", typeName);
+
+ if (hasParams) AppendParameters(buf, property.Parameters, '(', ')');
+ else buf.Append("()");
+
+ buf.Append(";");
+ }
+ if (setVisible != null)
+ {
+ if (setVisible != propVisib)
+ buf.Append(' ').Append(setVisible);
+ buf.Append(' ').AppendFormat("void set(");
+
+ if (hasParams)
+ {//no need for braces since they are added in other place
+ AppendParameters(buf, property.Parameters, null, null);
+ buf.Append(", ");
+ }
+ buf.AppendFormat("{0} value)", typeName);
+ buf.Append(";");
+ }
+ buf.Append(" };");
+
+ return buf[0] != ' ' ? buf.ToString () : buf.ToString (1, buf.Length - 1);
+ }
+
+ protected virtual string GetPropertyVisibility(PropertyDefinition property, out string getVisible, out string setVisible )
+ {
+ getVisible = null;
+ setVisible = null;
+
+ if (DocUtils.IsAvailablePropertyMethod(property.GetMethod))
+ getVisible = AppendVisibility(new StringBuilder(), property.GetMethod).ToString();
+ if (DocUtils.IsAvailablePropertyMethod(property.SetMethod))
+ setVisible = AppendVisibility(new StringBuilder(), property.SetMethod).ToString();
+
+ if (setVisible == null && getVisible == null)
+ return null;
+
+ StringBuilder buf = new StringBuilder();
+ if (getVisible != null && (setVisible == null || getVisible == setVisible))
+ buf.Append(getVisible);
+ else if (setVisible != null && getVisible == null)
+ buf.Append(setVisible);
+ else
+ buf.Append("public: ");
+
+ return buf.ToString();
+ }
+
+ protected override string GetFieldDeclaration (FieldDefinition field)
+ {
+ TypeDefinition declType = field.DeclaringType;
+ if (declType.IsEnum && field.Name == "value__")
+ return null; // This member of enums aren't documented.
+
+ StringBuilder buf = new StringBuilder ();
+ AppendFieldVisibility (buf, field);
+
+ if (declType.IsEnum)
+ return field.Name;
+
+ if (field.IsStatic && !field.IsLiteral)
+ buf.Append("static ");
+ if (field.IsInitOnly)
+ buf.Append("initonly ");
+
+ string fieldFullName = field.FullName;
+ if (fieldFullName.Contains(' '))
+ {
+ var splitType = fieldFullName.Split(' ');
+
+ if (splitType.Any(str => str == "modopt(System.Runtime.CompilerServices.IsConst)"))
+ {
+ buf.Append("const ");
+ }
+ }
+
+ buf.Append(GetTypeNameWithOptions(field.FieldType, AppendHatOnReturn)).Append(' ');
+ buf.Append(field.Name);
+ AppendFieldValue (buf, field);
+ buf.Append(';');
+
+ return buf.ToString ();
+ }
+
+ protected virtual StringBuilder AppendFieldVisibility (StringBuilder buf, FieldDefinition field)
+ {
+ if (field.IsPublic)
+ return buf.Append("public: ");
+ if (field.IsFamily)
+ return buf.Append("protected: ");
+ if(field.IsFamilyOrAssembly)
+ return buf.Append("protected public: ");
+ return buf;
+ }
+
+ protected static StringBuilder AppendFieldValue (StringBuilder buf, FieldDefinition field)
+ {
+ // enums have a value__ field, which we ignore
+ if (field.DeclaringType.IsEnum ||
+ field.DeclaringType.IsGenericType ())
+ return buf;
+ if (field.HasConstant && field.IsLiteral)
+ {
+ object val = null;
+ try
+ {
+ val = field.Constant;
+ }
+ catch
+ {
+ return buf;
+ }
+ if (val == null)
+ buf.Append(" = ").Append("nullptr");
+ else if (val is Enum)
+ buf.Append(" = ").Append(val);
+ else if (val is IFormattable)
+ {
+ string value = ((IFormattable)val).ToString (null, CultureInfo.InvariantCulture);
+ buf.Append(" = ").Append(value);
+ }
+ }
+ return buf;
+ }
+
+ protected override string GetEventDeclaration (EventDefinition e)
+ {
+ StringBuilder buf = new StringBuilder ();
+ if (AppendVisibility (buf, e.AddMethod).Length == 0)
+ {
+ return null;
+ }
+
+ AppendModifiers(buf, e.AddMethod);
+
+ buf.Append(" event ");
+
+ var typeName = GetTypeNameWithOptions(e.EventType, AppendHatOnReturn);
+
+ buf.Append(typeName).Append(' ');
+ buf.Append(e.Name).Append(';');
+
+ return buf.ToString ();
+ }
+
+ public virtual string GetNameWithOptions(MemberReference member, bool appendGeneric = true, bool appendHat = true)
+ {
+ if (member is TypeReference type)
+ return GetTypeNameWithOptions(type, appendHat, appendGeneric);
+ var method = member as MethodReference;
+ if (method != null && method.Name == ".ctor") // method.IsConstructor
+ return GetConstructorName(method);
+ if (method != null)
+ return GetMethodName(method);
+ if (member is PropertyReference prop)
+ return GetPropertyName(prop);
+ if (member is FieldReference field)
+ return GetFieldName(field);
+ if (member is EventReference e)
+ return GetEventName(e);
+ throw new NotSupportedException("Can't handle: " +
+ (member?.GetType().ToString() ?? "null"));
+ }
+
+ public override bool IsSupported(MemberReference mref)
+ {
+ if (mref.IsDefinition == false)
+ mref = mref.Resolve() as MemberReference;
+
+ switch (mref)
+ {
+ case FieldDefinition field:
+ return IsSupportedField(field);
+ case MethodDefinition method:
+ return IsSupportedMethod(method);
+ case PropertyDefinition property:
+ return IsSupportedProperty(property);
+ case EventDefinition @event:
+ return IsSupportedEvent(@event);
+ }
+
+ throw new NotSupportedException("Unsupported member type: " + mref?.GetType().FullName);
+ }
+
+ public virtual bool IsSupportedMethod(MethodDefinition mdef)
+ {
+ return
+ IsSupported(mdef.ReturnType)
+ && mdef.Parameters.All(i => IsSupported(i.ParameterType))
+ //no possibility for default parameters
+ && mdef.Parameters.All(i => !i.HasDefault && !i.IsOptional && !i.HasConstant)
+ ;
+ }
+ public virtual bool IsSupportedField(FieldDefinition fdef)
+ {
+ return IsSupported(fdef.FieldType);
+ }
+ public virtual bool IsSupportedProperty(PropertyDefinition pdef)
+ {
+ return IsSupported(pdef.PropertyType);
+ }
+
+ public virtual bool IsSupportedEvent(EventDefinition edef)
+ {
+ return IsSupported(edef.EventType);
+ }
+
+ public bool HasNestedClassesDuplicateNames(TypeReference tref)
+ {
+ string inputName = DocUtils.GetFormattedTypeName(tref.Name);
+ TypeDefinition parentType;
+ try
+ {
+ parentType = tref.DeclaringType?.Resolve();
+ }
+ catch
+ {
+ //Resolve() can fail as sometimes Cecil understands types as .net
+ //needs to ignore those errors
+ parentType = null;
+ }
+
+ if (parentType != null && parentType.HasNestedTypes)
+ {
+ var listOfNested = parentType.NestedTypes;
+ int count = listOfNested.Select(x => DocUtils.GetFormattedTypeName(x.Name)).Count(y => y == inputName);
+ if (count > 1)
+ return true;
+ }
+ return false;
+ }
+
+ public override bool IsSupported(TypeReference tref)
+ {
+
+ return !HasNestedClassesDuplicateNames(tref)
+ && IsSupportedGenericParameter(tref)
+ && base.IsSupported(tref)
+ ;
+ }
+
+ protected bool IsSupportedGenericParameter(TypeReference tref)
+ {
+ if (tref is GenericParameter parameter)
+ {
+ //no support for parameter covariance/contrvariance
+ GenericParameterAttributes attrs = parameter.Attributes;
+ bool isout = (attrs & GenericParameterAttributes.Covariant) != 0;
+ bool isin = (attrs & GenericParameterAttributes.Contravariant) != 0;
+ if (isin || isout)
+ return false;
+ }
+
+ return true;
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppMemberFormatter.cs
new file mode 100644
index 00000000..d6d4a765
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppMemberFormatter.cs
@@ -0,0 +1,14 @@
+using System.Text;
+using Mono.Cecil;
+using Mono.Documentation.Updater.CppFormatters;
+
+namespace Mono.Documentation.Updater.Formatters.CppFormatters
+{
+ public class CppMemberFormatter : CppFullMemberFormatter
+ {
+ protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
+ {
+ return buf;
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs
new file mode 100644
index 00000000..26193ecc
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtFullMemberFormatter.cs
@@ -0,0 +1,348 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Mono.Cecil;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
+
+namespace Mono.Documentation.Updater.CppFormatters
+{
+ public class CppWinRtFullMemberFormatter : CppCxFullMemberFormatter
+ {
+ protected override bool AppendHatOnReturn => false;
+ protected override string HatModifier => $" const{RefTypeModifier}";
+ public override string Language => Consts.CppWinRt;
+ protected override string RefTypeModifier => " &";
+
+ protected override IList<string> GetAllowedTypes()
+ {
+ return new List<string>(AllowedFundamentalTypes);
+ }
+
+ protected override StringBuilder AppendNamespace(StringBuilder buf, TypeReference type)
+ {
+ var @namespace=base.AppendNamespace(buf, type);
+ if (@namespace.ToString().StartsWith($"Windows{NestedTypeSeparator}"))
+ {
+ buf.Insert(0, $"winrt{NestedTypeSeparator}");
+ }
+
+ return @namespace;
+ }
+
+ protected override string GetCppType(string t)
+ {
+ // make sure there are no modifiers in the type string (add them back before returning)
+ string typeToCompare = t;
+ string[] splitType = null;
+ if (t.Contains(' '))
+ {
+ splitType = t.Split(' ');
+ typeToCompare = splitType[0];
+
+ foreach (var str in splitType)
+ {
+ if (str == "modopt(System.Runtime.CompilerServices.IsLong)" && typeToCompare == "System.Int32")
+ return "long";
+ if (str == "modopt(System.Runtime.CompilerServices.IsSignUnspecifiedByte)" &&
+ typeToCompare == "System.SByte")
+ return "char";
+ }
+ }
+
+ switch (typeToCompare)
+ {
+ case "System.Byte": typeToCompare = "byte"; break;
+ case "System.Int16": typeToCompare = "short"; break;
+ case "System.Int32": typeToCompare = "int"; break;
+ case "System.Int64": typeToCompare = "long"; break;
+ case "System.UInt16": typeToCompare = "unsigned short"; break;
+ case "System.UInt32": typeToCompare = "unsigned int"; break;
+ case "System.UInt64": typeToCompare = "unsigned long";break;
+
+ case "System.Single": typeToCompare = "float"; break;
+ case "System.Double": typeToCompare = "double"; break;
+
+ case "System.Boolean": typeToCompare = "bool"; break;
+ case "System.Char": typeToCompare = "char"; break;
+ case "System.Void": typeToCompare = "void"; break;
+ //API specific type is "winrt::hstring"; but c++ in built type is better variant
+ case "System.String": typeToCompare = "std::wstring"; break;
+ case "System.Object": typeToCompare = "winrt::Windows::Foundation::IInspectable"; break;
+ }
+
+ if (splitType != null)
+ {
+ // re-add modreq/modopt if it was there
+ splitType[0] = typeToCompare;
+ typeToCompare = string.Join(" ", splitType);
+ }
+ return typeToCompare == t ? null : typeToCompare;
+ }
+
+ protected override StringBuilder AppendParameter(StringBuilder buf, ParameterDefinition parameter)
+ {
+ if (parameter.ParameterType is ByReferenceType && parameter.IsOut)
+ {
+ //no notion of out -> mark with attribute to distinguish in other languages
+ buf.Append("[Runtime::InteropServices::Out] ");
+ }
+
+ if (parameter.HasCustomAttributes)
+ {
+ var isParams = parameter.CustomAttributes.Any(ca => ca.AttributeType.Name == "ParamArrayAttribute");
+ if (isParams)
+ buf.AppendFormat("... ");
+ }
+
+ buf.Append(GetTypeNameWithOptions(parameter.ParameterType, !AppendHatOnReturn)).Append(" ");
+ buf.Append(parameter.Name);
+
+ if (parameter.HasDefault && parameter.IsOptional && parameter.HasConstant)
+ {
+ buf.AppendFormat(" = {0}", MDocUpdater.MakeAttributesValueString(parameter.Constant, parameter.ParameterType));
+ }
+
+ return buf;
+ }
+
+ protected override string GetTypeKind(TypeDefinition t)
+ {
+ if (t.IsEnum || t.FullName == "System.Enum")
+ return "enum";
+ if (t.IsValueType)
+ return "struct";
+ if (t.IsClass)
+ return "class";
+ if (t.IsInterface)
+ return "__interface";
+ throw new ArgumentException(t.FullName);
+ }
+
+ protected override StringBuilder AppendArrayTypeName(StringBuilder buf, TypeReference type,
+ DynamicParserContext context)
+ {
+ buf.Append("std::Array <");
+
+ var item = type is TypeSpecification spec ? spec.ElementType : type.GetElementType();
+ _AppendTypeName(buf, item, context);
+ AppendHat(buf, item);
+
+ if (type is ArrayType arrayType)
+ {
+ int rank = arrayType.Rank;
+ if (rank > 1)
+ {
+ buf.AppendFormat(", {0}", rank);
+ }
+ }
+
+ buf.Append(">");
+
+ return buf;
+ }
+
+ protected override StringBuilder AppendExplisitImplementationMethod(StringBuilder buf, MethodDefinition method)
+ {
+ //no need to add additional syntax
+ return buf;
+ }
+
+ protected override string GetTypeDeclaration(TypeDefinition type)
+ {
+ StringBuilder buf = new StringBuilder();
+
+ var genericParamList = GetTypeSpecifiGenericParameters(type);
+ AppendGenericItem(buf, genericParamList);
+ AppendGenericTypeConstraints(buf, type);
+
+ AppendWebHostHiddenAttribute(buf, type);
+
+ buf.Append(GetTypeKind(type));
+ buf.Append(" ");
+ buf.Append(GetCppType(type.FullName) == null
+ ? GetNameWithOptions(type, false, false)
+ : type.Name);
+
+ if (type.IsAbstract && !type.IsInterface)
+ buf.Append(" abstract");
+ if (type.IsSealed && !DocUtils.IsDelegate(type) && !type.IsValueType)
+ buf.Append(" sealed");
+
+ CppWinRtFullMemberFormatter full = new CppWinRtFullMemberFormatter();
+
+ if (!type.IsEnum)
+ {
+ TypeReference basetype = type.BaseType;
+ if (basetype != null && basetype.FullName == "System.Object" || type.IsValueType) // FIXME
+ basetype = null;
+
+ List<string> interfaceNames;
+ try
+ {
+ //for winRt Resolve() can fail as Cecil understands winRt types as .net (eg, "System.Object" cannot be resolved)
+ interfaceNames = DocUtils.GetUserImplementedInterfaces(type)
+ .Select(iface => full.GetNameWithOptions(iface, true, false))
+ .OrderBy(s => s)
+ .ToList();
+ }
+ catch
+ {
+ interfaceNames = null;
+ }
+
+ if (basetype != null || interfaceNames?.Count > 0)
+ buf.Append(" : ");
+
+ if (basetype != null)
+ {
+ buf.Append(full.GetNameWithOptions(basetype, true, false));
+ if (interfaceNames?.Count > 0)
+ buf.Append(", ");
+ }
+
+ for (int i = 0; i < interfaceNames?.Count; i++)
+ {
+ if (i != 0)
+ buf.Append(", ");
+ buf.Append(interfaceNames?[i]);
+ }
+
+ }
+
+ return buf.ToString();
+ }
+
+ protected override string GetTypeVisibility(TypeAttributes ta)
+ {
+ //Cannot have pubic/protected visibility since it uses native C++ which cannot be exposed
+ return string.Empty;
+ }
+
+ protected override StringBuilder AppendVisibility(StringBuilder buf, MethodDefinition method)
+ {
+ //Cannot have pubic/protected visibility since it uses native C++ which cannot be exposed
+ return buf;
+ }
+
+ protected override StringBuilder AppendFieldVisibility(StringBuilder buf, FieldDefinition field)
+ {
+ //Cannot have pubic/protected visibility since it uses native C++ which cannot be exposed
+ return buf;
+ }
+
+ protected override StringBuilder AppendGenericItem(StringBuilder buf, IList<GenericParameter> args)
+ {
+ if (args != null && args.Any())
+ {
+ buf.Append("template <typename ");
+ buf.Append(args[0].Name);
+ for (int i = 1; i < args.Count; ++i)
+ buf.Append(", typename ").Append(args[i].Name);
+ buf.Append(">");
+ buf.Append(GetLineEnding());
+ }
+ return buf;
+ }
+
+ protected override string AppendSealedModifiers(string modifiersString, MethodDefinition method)
+ {
+ if (method.IsFinal) modifiersString += " sealed";
+ if (modifiersString == " virtual sealed") modifiersString = "";
+
+ return modifiersString;
+ }
+
+ public override bool IsSupported(TypeReference tref)
+ {
+ if (HasNestedClassesDuplicateNames(tref))
+ return false;
+
+ var ns = DocUtils.GetNamespace(tref);
+ var allowedTypes = GetAllowedTypes();
+
+ if (allowedTypes.Contains(tref.FullName.Split(' ')[0])
+ //winRt specific namespaces so no need for further check
+ || ns.StartsWith("Windows.")
+ )
+ {
+ return true;
+ }
+
+ TypeDefinition typedef = null;
+ try
+ {
+ typedef = tref.Resolve();
+ }
+ catch
+ {
+ //for winRt Resolve() can fail as Cecil understands winRt types as .net (eg, "System.Object" cannot be resolved)
+ }
+
+ if (typedef != null)
+ {
+ if(allowedTypes.Contains(typedef.FullName))
+ //to check type of array
+ return true;
+
+ if (DocUtils.IsDelegate(typedef))
+ {
+ //delegates can be used only in managed context
+ return false;
+ }
+
+ if (typedef.HasGenericParameters &&
+ typedef.GenericParameters.Any(x => x.HasConstraints
+ || x.HasReferenceTypeConstraint
+ || x.HasDefaultConstructorConstraint
+ || x.HasNotNullableValueTypeConstraint)
+ )
+ {
+ //Type parameters cannot be constrained
+ return false;
+ }
+
+ if (HasUnsupportedParent(typedef))
+ {
+ return false;
+ }
+ }
+
+ return IsSupportedGenericParameter(tref)
+ && !ns.StartsWith("System.") && !ns.Equals("System");
+ }
+
+ public override bool IsSupportedProperty(PropertyDefinition pdef)
+ {
+ //properties can be used only in managed context
+ return false;
+ }
+
+ public override bool IsSupportedEvent(EventDefinition edef)
+ {
+ //events can be used only in managed context
+ return false;
+ }
+
+ public override bool IsSupportedField(FieldDefinition fdef)
+ {
+ return IsSupported(fdef.FieldType);
+ }
+
+ public override bool IsSupportedMethod(MethodDefinition mdef)
+ {
+ if (DocUtils.IsExtensionMethod(mdef)
+ //no support of 'params';
+ //can be substituted with 'Variadic functions' hovewer it's not full equivalent(not type safe + specific mechanism for reading)
+ || mdef.Parameters.Any(IsParamsParameter)
+ )
+ {
+ return false;
+ }
+
+ return
+ IsSupported(mdef.ReturnType)
+ && mdef.Parameters.All(i => IsSupported(i.ParameterType));
+ }
+ }
+} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtMemberFormatter.cs
new file mode 100644
index 00000000..86bc446f
--- /dev/null
+++ b/mdoc/Mono.Documentation/Updater/Formatters/CppFormatters/CppWinRtMemberFormatter.cs
@@ -0,0 +1,14 @@
+using System.Text;
+using Mono.Cecil;
+using Mono.Documentation.Updater.CppFormatters;
+
+namespace Mono.Documentation.Updater.Formatters.CppFormatters
+{
+ public class CppWinRtMemberFormatter : CppWinRtFullMemberFormatter
+ {
+ protected override StringBuilder AppendNamespace(StringBuilder buf, TypeReference type)
+ {
+ return buf;
+ }
+ }
+}
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs
index 53f78567..f1b277d5 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/DocTypeFullMemberFormatter.cs
@@ -1,12 +1,12 @@
-namespace Mono.Documentation.Updater
+namespace Mono.Documentation.Updater
{
- class DocTypeFullMemberFormatter : MemberFormatter
- {
- public static readonly MemberFormatter Default = new DocTypeFullMemberFormatter ();
-
- protected override string NestedTypeSeparator
- {
- get { return "+"; }
- }
- }
+ class DocTypeFullMemberFormatter : MemberFormatter
+ {
+ public static readonly MemberFormatter Default = new DocTypeFullMemberFormatter ();
+
+ protected override string NestedTypeSeparator
+ {
+ get { return "+"; }
+ }
+ }
} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs
index 3e0e99c9..5d3a3432 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/FileNameMemberFormatter.cs
@@ -1,19 +1,19 @@
-using System.Text;
-
-using Mono.Cecil;
+using System.Text;
-namespace Mono.Documentation.Updater
+using Mono.Cecil;
+
+namespace Mono.Documentation.Updater
{
- class FileNameMemberFormatter : SlashDocMemberFormatter
- {
- protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
- {
- return buf;
- }
-
- protected override string NestedTypeSeparator
- {
- get { return "+"; }
- }
- }
+ class FileNameMemberFormatter : SlashDocMemberFormatter
+ {
+ protected override StringBuilder AppendNamespace (StringBuilder buf, TypeReference type)
+ {
+ return buf;
+ }
+
+ protected override string NestedTypeSeparator
+ {
+ get { return "+"; }
+ }
+ }
} \ No newline at end of file
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
index 4df41918..0e2816b9 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/MemberFormatter.cs
@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
-
using Mono.Documentation.Util;
using Mono.Cecil;
@@ -109,9 +108,7 @@ namespace Mono.Documentation.Updater
{
if (type is ArrayType)
{
-
return AppendArrayTypeName(buf, type, context);
-
}
if (type is ByReferenceType)
{
diff --git a/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs b/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
index e1a1bb8c..493b7b2e 100644
--- a/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
+++ b/mdoc/Mono.Documentation/Updater/Formatters/SlashDocMemberFormatter.cs
@@ -5,14 +5,15 @@ using System.Text;
using Mono.Cecil;
using Mono.Documentation.Util;
-
+
namespace Mono.Documentation.Updater
-{
+{
class SlashDocMemberFormatter : MemberFormatter
{
protected override string[] GenericTypeContainer
{
+
get { return new string[] { "{", "}" }; }
}
@@ -322,7 +323,7 @@ namespace Mono.Documentation.Updater
{
string name = GetName(e);
if (name == null)
- return null;
+ return null;
return "E:" + name;
}
@@ -330,7 +331,7 @@ namespace Mono.Documentation.Updater
{
string name = GetName(a);
if (name == null)
- return null;
+ return null;
return "P:" + name;
}
}
diff --git a/mdoc/Test/UwpTestWinRtComponentCpp.winmd b/mdoc/Test/UwpTestWinRtComponentCpp.winmd
new file mode 100644
index 00000000..5cbfe427
--- /dev/null
+++ b/mdoc/Test/UwpTestWinRtComponentCpp.winmd
Binary files differ
diff --git a/mdoc/Test/en.expected-cppcli/FrameworksIndex/One.xml b/mdoc/Test/en.expected-cppcli/FrameworksIndex/One.xml
new file mode 100644
index 00000000..a60754a0
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/FrameworksIndex/One.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Framework Name="One">
+ <Namespace Name="MyFramework.MyNamespace">
+ <Type Name="MyFramework.MyNamespace.MyClass" Id="T:MyFramework.MyNamespace.MyClass">
+ <Member Id="M:MyFramework.MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyFramework.MyNamespace.MyClass.Hello(System.Int32)" />
+ <Member Id="P:MyFramework.MyNamespace.MyClass.MyProperty" />
+ <Member Id="P:MyFramework.MyNamespace.MyClass.OnlyInClassic" />
+ </Type>
+ <Type Name="MyFramework.MyNamespace.MyClassExtensions" Id="T:MyFramework.MyNamespace.MyClassExtensions">
+ <Member Id="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Type>
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyNamespace.MyClass" Id="T:MyNamespace.MyClass">
+ <Member Id="M:MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyNamespace.MyClass.SomeMethod``1" />
+ </Type>
+ </Namespace>
+</Framework> \ No newline at end of file
diff --git a/mdoc/Test/en.expected-cppcli/FrameworksIndex/Two.xml b/mdoc/Test/en.expected-cppcli/FrameworksIndex/Two.xml
new file mode 100644
index 00000000..b697626e
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/FrameworksIndex/Two.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Framework Name="Two">
+ <Namespace Name="MyFramework.MyOtherNamespace">
+ <Type Name="MyFramework.MyOtherNamespace.MyOtherClass" Id="T:MyFramework.MyOtherNamespace.MyOtherClass">
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.#ctor" />
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.Hello(System.Double)" />
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.Hello(System.Int32)" />
+ <Member Id="P:MyFramework.MyOtherNamespace.MyOtherClass.MyProperty" />
+ </Type>
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyNamespace.MyClass" Id="T:MyNamespace.MyClass">
+ <Member Id="M:MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyNamespace.MyClass.SomeMethod``1" />
+ </Type>
+ </Namespace>
+</Framework> \ No newline at end of file
diff --git a/mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClass.xml b/mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClass.xml
new file mode 100644
index 00000000..11a1997b
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClass.xml
@@ -0,0 +1,92 @@
+<Type Name="MyClass" FullName="MyFramework.MyNamespace.MyClass">
+ <TypeSignature Language="C#" Value="public class MyClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+ <TypeSignature Language="C++ CLI" Value="public ref class MyClass" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; MyClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (int value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; float Hello(int value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyProperty">
+ <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; property System::String ^ MyProperty { System::String ^ get(); void set(System::String ^ value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="OnlyInClassic">
+ <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; property double OnlyInClassic { double get(); void set(double value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClassExtensions.xml b/mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644
index 00000000..5cc4e950
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/MyFramework.MyNamespace/MyClassExtensions.xml
@@ -0,0 +1,41 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <TypeSignature Language="C++ CLI" Value="public ref class MyClassExtensions abstract sealed" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA;[System::Runtime::CompilerServices::Extension]&#xA; static bool AnExtension(MyFramework::MyNamespace::MyClass ^ value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcli/MyFramework.MyOtherNamespace/MyOtherClass.xml b/mdoc/Test/en.expected-cppcli/MyFramework.MyOtherNamespace/MyOtherClass.xml
new file mode 100644
index 00000000..31718e42
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/MyFramework.MyOtherNamespace/MyOtherClass.xml
@@ -0,0 +1,96 @@
+<Type Name="MyOtherClass" FullName="MyFramework.MyOtherNamespace.MyOtherClass">
+ <TypeSignature Language="C#" Value="public class MyOtherClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyOtherClass extends System.Object" />
+ <TypeSignature Language="C++ CLI" Value="public ref class MyOtherClass" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyOtherClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; MyOtherClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (double value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(float64 value) cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; float Hello(double value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Double" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (int value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; float Hello(int value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyProperty">
+ <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; property System::String ^ MyProperty { System::String ^ get(); void set(System::String ^ value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcli/MyNamespace/MyClass.xml b/mdoc/Test/en.expected-cppcli/MyNamespace/MyClass.xml
new file mode 100644
index 00000000..a9e44432
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/MyNamespace/MyClass.xml
@@ -0,0 +1,57 @@
+<Type Name="MyClass" FullName="MyNamespace.MyClass">
+ <TypeSignature Language="C#" Value="public class MyClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+ <TypeSignature Language="C++ CLI" Value="public ref class MyClass" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA; MyClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="SomeMethod&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public string SomeMethod&lt;T&gt; ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string SomeMethod&lt;T&gt;() cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename T&gt;&#xA; System::String ^ SomeMethod();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcli/index.xml b/mdoc/Test/en.expected-cppcli/index.xml
new file mode 100644
index 00000000..e4a6fd3b
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/index.xml
@@ -0,0 +1,73 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ <Assembly Name="DocTest-DropNS-classic-secondary" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ <Assembly Name="DocTest-addNonGeneric" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="MyFramework.MyNamespace">
+ <Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
+ </Namespace>
+ <Namespace Name="MyFramework.MyOtherNamespace">
+ <Type Name="MyOtherClass" Kind="Class" />
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyClass" Kind="Class" />
+ </Namespace>
+ </Types>
+ <Title>Untitled</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberSignature Language="C++ CLI" Value="public:&#xA;[System::Runtime::CompilerServices::Extension]&#xA; static bool AnExtension(MyFramework::MyNamespace::MyClass ^ value);" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
+</Overview>
diff --git a/mdoc/Test/en.expected-cppcli/ns-MyFramework.MyNamespace.xml b/mdoc/Test/en.expected-cppcli/ns-MyFramework.MyNamespace.xml
new file mode 100644
index 00000000..74df75af
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/ns-MyFramework.MyNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcli/ns-MyFramework.MyOtherNamespace.xml b/mdoc/Test/en.expected-cppcli/ns-MyFramework.MyOtherNamespace.xml
new file mode 100644
index 00000000..8bdef1c7
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/ns-MyFramework.MyOtherNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyOtherNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcli/ns-MyNamespace.xml b/mdoc/Test/en.expected-cppcli/ns-MyNamespace.xml
new file mode 100644
index 00000000..bd8d4316
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcli/ns-MyNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcx/FrameworksIndex/One.xml b/mdoc/Test/en.expected-cppcx/FrameworksIndex/One.xml
new file mode 100644
index 00000000..a60754a0
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/FrameworksIndex/One.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Framework Name="One">
+ <Namespace Name="MyFramework.MyNamespace">
+ <Type Name="MyFramework.MyNamespace.MyClass" Id="T:MyFramework.MyNamespace.MyClass">
+ <Member Id="M:MyFramework.MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyFramework.MyNamespace.MyClass.Hello(System.Int32)" />
+ <Member Id="P:MyFramework.MyNamespace.MyClass.MyProperty" />
+ <Member Id="P:MyFramework.MyNamespace.MyClass.OnlyInClassic" />
+ </Type>
+ <Type Name="MyFramework.MyNamespace.MyClassExtensions" Id="T:MyFramework.MyNamespace.MyClassExtensions">
+ <Member Id="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Type>
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyNamespace.MyClass" Id="T:MyNamespace.MyClass">
+ <Member Id="M:MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyNamespace.MyClass.SomeMethod``1" />
+ </Type>
+ </Namespace>
+</Framework> \ No newline at end of file
diff --git a/mdoc/Test/en.expected-cppcx/FrameworksIndex/Two.xml b/mdoc/Test/en.expected-cppcx/FrameworksIndex/Two.xml
new file mode 100644
index 00000000..b697626e
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/FrameworksIndex/Two.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Framework Name="Two">
+ <Namespace Name="MyFramework.MyOtherNamespace">
+ <Type Name="MyFramework.MyOtherNamespace.MyOtherClass" Id="T:MyFramework.MyOtherNamespace.MyOtherClass">
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.#ctor" />
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.Hello(System.Double)" />
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.Hello(System.Int32)" />
+ <Member Id="P:MyFramework.MyOtherNamespace.MyOtherClass.MyProperty" />
+ </Type>
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyNamespace.MyClass" Id="T:MyNamespace.MyClass">
+ <Member Id="M:MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyNamespace.MyClass.SomeMethod``1" />
+ </Type>
+ </Namespace>
+</Framework> \ No newline at end of file
diff --git a/mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClass.xml b/mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClass.xml
new file mode 100644
index 00000000..0e655765
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClass.xml
@@ -0,0 +1,91 @@
+<Type Name="MyClass" FullName="MyFramework.MyNamespace.MyClass">
+ <TypeSignature Language="C#" Value="public class MyClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; MyClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (int value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; float Hello(int value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyProperty">
+ <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; property Platform::String ^ MyProperty { Platform::String ^ get(); void set(Platform::String ^ value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="OnlyInClassic">
+ <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; property double OnlyInClassic { double get(); void set(double value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClassExtensions.xml b/mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644
index 00000000..522c5fb8
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/MyFramework.MyNamespace/MyClassExtensions.xml
@@ -0,0 +1,40 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <TypeSignature Language="C++ CX" Value="public ref class MyClassExtensions abstract sealed" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx/MyFramework.MyOtherNamespace/MyOtherClass.xml b/mdoc/Test/en.expected-cppcx/MyFramework.MyOtherNamespace/MyOtherClass.xml
new file mode 100644
index 00000000..e0c0748e
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/MyFramework.MyOtherNamespace/MyOtherClass.xml
@@ -0,0 +1,95 @@
+<Type Name="MyOtherClass" FullName="MyFramework.MyOtherNamespace.MyOtherClass">
+ <TypeSignature Language="C#" Value="public class MyOtherClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyOtherClass extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyOtherClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; MyOtherClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (double value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(float64 value) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; float Hello(double value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Double" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (int value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; float Hello(int value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyProperty">
+ <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; property Platform::String ^ MyProperty { Platform::String ^ get(); void set(Platform::String ^ value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx/MyNamespace/MyClass.xml b/mdoc/Test/en.expected-cppcx/MyNamespace/MyClass.xml
new file mode 100644
index 00000000..4c44fbbb
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/MyNamespace/MyClass.xml
@@ -0,0 +1,56 @@
+<Type Name="MyClass" FullName="MyNamespace.MyClass">
+ <TypeSignature Language="C#" Value="public class MyClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; MyClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="SomeMethod&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public string SomeMethod&lt;T&gt; ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string SomeMethod&lt;T&gt;() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; Platform::String ^ SomeMethod();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx/index.xml b/mdoc/Test/en.expected-cppcx/index.xml
new file mode 100644
index 00000000..6abf1402
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/index.xml
@@ -0,0 +1,72 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ <Assembly Name="DocTest-DropNS-classic-secondary" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ <Assembly Name="DocTest-addNonGeneric" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="MyFramework.MyNamespace">
+ <Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
+ </Namespace>
+ <Namespace Name="MyFramework.MyOtherNamespace">
+ <Type Name="MyOtherClass" Kind="Class" />
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyClass" Kind="Class" />
+ </Namespace>
+ </Types>
+ <Title>Untitled</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
+</Overview>
diff --git a/mdoc/Test/en.expected-cppcx/ns-MyFramework.MyNamespace.xml b/mdoc/Test/en.expected-cppcx/ns-MyFramework.MyNamespace.xml
new file mode 100644
index 00000000..74df75af
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/ns-MyFramework.MyNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcx/ns-MyFramework.MyOtherNamespace.xml b/mdoc/Test/en.expected-cppcx/ns-MyFramework.MyOtherNamespace.xml
new file mode 100644
index 00000000..8bdef1c7
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/ns-MyFramework.MyOtherNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyOtherNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcx/ns-MyNamespace.xml b/mdoc/Test/en.expected-cppcx/ns-MyNamespace.xml
new file mode 100644
index 00000000..bd8d4316
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx/ns-MyNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Extensions.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Extensions.xml
new file mode 100644
index 00000000..af278a08
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Extensions.xml
@@ -0,0 +1,143 @@
+<Type Name="Extensions" FullName="Mono.DocTest.Generic.Extensions">
+ <TypeSignature Language="C#" Value="public static class Extensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Extensions extends System.Object" />
+ <TypeSignature Language="C++ CX" Value="public ref class Extensions abstract sealed" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="Bar&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Bar&lt;T&gt; (this Mono.DocTest.Generic.IFoo&lt;T&gt; self, string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar&lt;T&gt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt; self, string s) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA;[System::Runtime::CompilerServices::Extension]&#xA; static void Bar(Mono::DocTest::Generic::IFoo&lt;T&gt; ^ self, Platform::String ^ s);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="Mono.DocTest.Generic.IFoo&lt;T&gt;" RefType="this" />
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ForEach&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt; (this System.Collections.Generic.IEnumerable&lt;T&gt; self, Action&lt;T&gt; a);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach&lt;T&gt;(class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; self, class System.Action`1&lt;!!T&gt; a) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="System.Collections.Generic.IEnumerable&lt;T&gt;" RefType="this" />
+ <Parameter Name="a" Type="System.Action&lt;T&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToDouble">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;double&gt; ToDouble (this System.Collections.Generic.IEnumerable&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;float64&gt; ToDouble(class System.Collections.Generic.IEnumerable`1&lt;int32&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.IEnumerable&lt;System.Int32&gt;" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToDouble&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static double ToDouble&lt;T&gt; (this T val) where T : Mono.DocTest.Generic.IFoo&lt;T&gt;;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble&lt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt;) T&gt;(!!T val) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; where T : Mono::DocTest::Generic::IFoo&lt;T&gt;[System::Runtime::CompilerServices::Extension]&#xA; static double ToDouble(T val);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;T&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="val" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="val">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToEnumerable&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;T&gt; ToEnumerable&lt;T&gt; (this T self);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; ToEnumerable&lt;T&gt;(!!T self) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Func`2.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Func`2.xml
new file mode 100644
index 00000000..2d8dcf09
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/Func`2.xml
@@ -0,0 +1,64 @@
+<Type Name="Func&lt;TArg,TRet&gt;" FullName="Mono.DocTest.Generic.Func&lt;TArg,TRet&gt;">
+ <TypeSignature Language="C#" Value="public delegate TRet Func&lt;in TArg,out TRet&gt;(TArg a) where TArg : Exception;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Func`2&lt;(class System.Exception) - TArg, + TRet&gt; extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="TArg">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("arg!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Constraints>
+ <ParameterAttribute>Contravariant</ParameterAttribute>
+ <BaseTypeName>System.Exception</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ <TypeParameter Name="TRet">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("ret!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Constraints>
+ <ParameterAttribute>Covariant</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("method")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters>
+ <Parameter Name="a" Type="TArg">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("arg-actual")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>TRet</ReturnType>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("return", Field=false)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </ReturnValue>
+ <Docs>
+ <typeparam name="TArg">To be added.</typeparam>
+ <typeparam name="TRet">To be added.</typeparam>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
new file mode 100644
index 00000000..60def22f
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
@@ -0,0 +1,35 @@
+<Type Name="GenericBase&lt;U&gt;+FooEventArgs" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+FooEventArgs">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;.FooEventArgs : EventArgs" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/FooEventArgs&lt;U&gt; extends System.EventArgs" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.EventArgs</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public FooEventArgs ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; FooEventArgs();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
new file mode 100644
index 00000000..b7f25170
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
@@ -0,0 +1,21 @@
+<Type Name="GenericBase&lt;U&gt;+NestedCollection+Enumerator" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+NestedCollection+Enumerator">
+ <TypeSignature Language="C#" Value="protected internal struct GenericBase&lt;U&gt;.NestedCollection.Enumerator" />
+ <TypeSignature Language="ILAsm" Value=".class nested protected sequential ansi sealed beforefieldinit GenericBase`1/NestedCollection/Enumerator&lt;U&gt; extends System.ValueType" />
+ <TypeSignature Language="C++ CX" Value="public protected value class GenericBase&lt;U&gt;::NestedCollection::Enumerator" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
new file mode 100644
index 00000000..e29aff66
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
@@ -0,0 +1,35 @@
+<Type Name="GenericBase&lt;U&gt;+NestedCollection" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+NestedCollection">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;.NestedCollection" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/NestedCollection&lt;U&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NestedCollection ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; NestedCollection();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1.xml
new file mode 100644
index 00000000..8023a01c
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/GenericBase`1.xml
@@ -0,0 +1,147 @@
+<Type Name="GenericBase&lt;U&gt;" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit GenericBase`1&lt;U&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public GenericBase ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; GenericBase();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="BaseMethod&lt;S&gt;">
+ <MemberSignature Language="C#" Value="public U BaseMethod&lt;S&gt; (S genericParameter);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance !U BaseMethod&lt;S&gt;(!!S genericParameter) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename S&gt;&#xA; U BaseMethod(S genericParameter);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>U</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="S">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("S")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="genericParameter" Type="S" />
+ </Parameters>
+ <Docs>
+ <typeparam name="S">To be added.</typeparam>
+ <param name="genericParameter">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ConstField1">
+ <MemberSignature Language="C#" Value="public const int ConstField1;" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal int32 ConstField1" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ItemChanged">
+ <MemberSignature Language="C#" Value="public event Action&lt;Mono.DocTest.Generic.MyList&lt;U&gt;,Mono.DocTest.Generic.MyList&lt;U&gt;.Helper&lt;U,U&gt;&gt; ItemChanged;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.Action`2&lt;class Mono.DocTest.Generic.MyList`1&lt;!U&gt;, class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!U, !U, !U&gt;&gt; ItemChanged" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Action&lt;Mono.DocTest.Generic.MyList&lt;U&gt;,Mono.DocTest.Generic.MyList&lt;U&gt;+Helper&lt;U,U&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyEvent">
+ <MemberSignature Language="C#" Value="public event EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;U&gt;.FooEventArgs&gt; MyEvent;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Mono.DocTest.Generic.GenericBase`1/FooEventArgs&lt;!U&gt;&gt; MyEvent" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;U&gt;+FooEventArgs&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Explicit">
+ <MemberSignature Language="C#" Value="public static explicit operator U (Mono.DocTest.Generic.GenericBase&lt;U&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname !U op_Explicit(class Mono.DocTest.Generic.GenericBase`1&lt;!U&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>U</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="Mono.DocTest.Generic.GenericBase&lt;U&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="StaticField1">
+ <MemberSignature Language="C#" Value="public static readonly Mono.DocTest.Generic.GenericBase&lt;U&gt; StaticField1;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly class Mono.DocTest.Generic.GenericBase`1&lt;!U&gt; StaticField1" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.GenericBase&lt;U&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/IFoo`1.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/IFoo`1.xml
new file mode 100644
index 00000000..70c354b7
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/IFoo`1.xml
@@ -0,0 +1,47 @@
+<Type Name="IFoo&lt;T&gt;" FullName="Mono.DocTest.Generic.IFoo&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public interface IFoo&lt;T&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IFoo`1&lt;T&gt;" />
+ <TypeSignature Language="C++ CX" Value="public interface class IFoo" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Interfaces />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="Method&lt;U&gt;">
+ <MemberSignature Language="C#" Value="public T Method&lt;U&gt; (T t, U u);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !T Method&lt;U&gt;(!T t, !!U u) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; T Method(T t, U u);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>T</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1+Helper`2.xml
new file mode 100644
index 00000000..d3f762b4
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -0,0 +1,63 @@
+<Type Name="MyList&lt;T&gt;+Helper&lt;U,V&gt;" FullName="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;T&gt;.Helper&lt;U,V&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit MyList`1/Helper`2&lt;T, U, V&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Helper ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Helper();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="UseT">
+ <MemberSignature Language="C#" Value="public void UseT (T a, U b, V c);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseT(!T a, !U b, !V c) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void UseT(T a, U b, V c);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="T" />
+ <Parameter Name="b" Type="U" />
+ <Parameter Name="c" Type="V" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <param name="c">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml
new file mode 100644
index 00000000..520a0633
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`1.xml
@@ -0,0 +1,209 @@
+<Type Name="MyList&lt;T&gt;" FullName="Mono.DocTest.Generic.MyList&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;T&gt; : Mono.DocTest.Generic.GenericBase&lt;T&gt;, System.Collections.Generic.IEnumerable&lt;int[]&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`1&lt;T&gt; extends Mono.DocTest.Generic.GenericBase`1&lt;!T&gt; implements class System.Collections.Generic.IEnumerable`1&lt;int32[]&gt;, class System.Collections.IEnumerable" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Type Parameter!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>Mono.DocTest.Generic.GenericBase&lt;T&gt;</BaseTypeName>
+ <BaseTypeArguments>
+ <BaseTypeArgument TypeParamName="U">T</BaseTypeArgument>
+ </BaseTypeArguments>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerable&lt;System.Int32[]&gt;</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyList ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; MyList();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetEnumerator">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerator&lt;int[]&gt; GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1&lt;int32[]&gt; GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.IEnumerable`1.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerator&lt;System.Int32[]&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetHelper&lt;U,V&gt;">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; GetHelper&lt;U,V&gt; ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!T, !!U, !!V&gt; GetHelper&lt;U, V&gt;() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Method&lt;U&gt;">
+ <MemberSignature Language="C#" Value="public void Method&lt;U&gt; (T t, U u);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Method&lt;U&gt;(!T t, !!U u) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void Method(T t, U u);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="RefMethod&lt;U&gt;">
+ <MemberSignature Language="C#" Value="public void RefMethod&lt;U&gt; (ref T t, ref U u);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod&lt;U&gt;(!T&amp; t, !!U&amp; u) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename U&gt;&#xA; void RefMethod(T &amp; t, U &amp; u);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T&amp;" RefType="ref" />
+ <Parameter Name="u" Type="U&amp;" RefType="ref" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerable.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.IEnumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Test">
+ <MemberSignature Language="C#" Value="public void Test (T t);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Test(!T t) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void Test(T t);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ </Parameters>
+ <Docs>
+ <param name="t">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="UseHelper&lt;U,V&gt;">
+ <MemberSignature Language="C#" Value="public void UseHelper&lt;U,V&gt; (Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; helper);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper&lt;U, V&gt;(class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!T, !!U, !!V&gt; helper) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="helper" Type="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <param name="helper">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`2.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`2.xml
new file mode 100644
index 00000000..e4a887c7
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest.Generic/MyList`2.xml
@@ -0,0 +1,443 @@
+<Type Name="MyList&lt;A,B&gt;" FullName="Mono.DocTest.Generic.MyList&lt;A,B&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;A,B&gt; : Mono.DocTest.Generic.GenericBase&lt;System.Collections.Generic.Dictionary&lt;A,B&gt;&gt;, Mono.DocTest.Generic.IFoo&lt;A&gt;, System.Collections.Generic.ICollection&lt;A&gt;, System.Collections.Generic.IEnumerable&lt;A&gt;, System.Collections.Generic.IEnumerator&lt;A&gt; where A : class, IList&lt;B&gt;, new() where B : class, A" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`2&lt;class .ctor (class System.Collections.Generic.IList`1&lt;!B&gt;) A, class (!A) B&gt; extends Mono.DocTest.Generic.GenericBase`1&lt;class System.Collections.Generic.Dictionary`2&lt;!A, !B&gt;&gt; implements class Mono.DocTest.Generic.IFoo`1&lt;!A&gt;, class System.Collections.Generic.ICollection`1&lt;!A&gt;, class System.Collections.Generic.IEnumerable`1&lt;!A&gt;, class System.Collections.Generic.IEnumerator`1&lt;!A&gt;, class System.Collections.IEnumerable, class System.Collections.IEnumerator, class System.IDisposable" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="A">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ <InterfaceName>System.Collections.Generic.IList&lt;B&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ <TypeParameter Name="B">
+ <Constraints>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ <BaseTypeName>A</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>Mono.DocTest.Generic.GenericBase&lt;System.Collections.Generic.Dictionary&lt;A,B&gt;&gt;</BaseTypeName>
+ <BaseTypeArguments>
+ <BaseTypeArgument TypeParamName="U">System.Collections.Generic.Dictionary&lt;A,B&gt;</BaseTypeArgument>
+ </BaseTypeArguments>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.ICollection&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerable&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerator&lt;A&gt;</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <typeparam name="A">To be added.</typeparam>
+ <typeparam name="B">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyList ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; MyList();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CopyTo">
+ <MemberSignature Language="C#" Value="public void CopyTo (A[] array, int arrayIndex);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void CopyTo(!A[] array, int32 arrayIndex) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void CopyTo(Platform::Array &lt;A&gt; ^ array, int arrayIndex);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="array" Type="A[]" />
+ <Parameter Name="arrayIndex" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="array">To be added.</param>
+ <param name="arrayIndex">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Count">
+ <MemberSignature Language="C#" Value="public int Count { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; property int Count { int get(); };" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.ICollection`1.Count</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Current">
+ <MemberSignature Language="C#" Value="public A Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance !A Current" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; property A Current { A get(); };" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.IEnumerator`1.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dispose">
+ <MemberSignature Language="C#" Value="public void Dispose ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void Dispose();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.IDisposable.Dispose</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Foo">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.KeyValuePair&lt;System.Collections.Generic.IEnumerable&lt;A&gt;,System.Collections.Generic.IEnumerable&lt;B&gt;&gt; Foo ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.KeyValuePair`2&lt;class System.Collections.Generic.IEnumerable`1&lt;!A&gt;, class System.Collections.Generic.IEnumerable`1&lt;!B&gt;&gt; Foo() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.KeyValuePair&lt;System.Collections.Generic.IEnumerable&lt;A&gt;,System.Collections.Generic.IEnumerable&lt;B&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetEnumerator">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.List&lt;A&gt;.Enumerator GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.List`1/Enumerator&lt;!A&gt; GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.List&lt;A&gt;+Enumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Mono.DocTest.Generic.IFoo&lt;A&gt;.Method&lt;U&gt;">
+ <MemberSignature Language="C#" Value="A IFoo&lt;A&gt;.Method&lt;U&gt; (A a, U u);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance !A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method&lt;U&gt;(!A a, !!U u) cil managed" />
+ <MemberSignature Language="C++ CX" Value="generic &lt;typename U&gt;&#xA; virtual A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A a, U u) = Mono::DocTest::Generic::IFoo&lt;A&gt;::Method;" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Mono.DocTest.Generic.IFoo`1.Method``1(`0,``0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="a" Type="A" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="a">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MoveNext">
+ <MemberSignature Language="C#" Value="public bool MoveNext ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool MoveNext() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; bool MoveNext();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerator.MoveNext</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Reset">
+ <MemberSignature Language="C#" Value="public void Reset ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Reset() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void Reset();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerator.Reset</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Add">
+ <MemberSignature Language="C#" Value="void ICollection&lt;A&gt;.Add (A item);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection&lt;A&gt;.Add(!A item) cil managed" />
+ <MemberSignature Language="C++ CX" Value=" virtual void System.Collections.Generic.ICollection&lt;A&gt;.Add(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Add;" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Add(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Clear">
+ <MemberSignature Language="C#" Value="void ICollection&lt;A&gt;.Clear ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection&lt;A&gt;.Clear() cil managed" />
+ <MemberSignature Language="C++ CX" Value=" virtual void System.Collections.Generic.ICollection&lt;A&gt;.Clear() = System::Collections::Generic::ICollection&lt;A&gt;::Clear;" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Clear</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Contains">
+ <MemberSignature Language="C#" Value="bool ICollection&lt;A&gt;.Contains (A item);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(!A item) cil managed" />
+ <MemberSignature Language="C++ CX" Value=" virtual bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Contains;" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Contains(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly">
+ <MemberSignature Language="C#" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly" />
+ <MemberSignature Language="C++ CX" Value="property bool System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly { bool get(); };" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.ICollection`1.IsReadOnly</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Remove">
+ <MemberSignature Language="C#" Value="bool ICollection&lt;A&gt;.Remove (A item);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(!A item) cil managed" />
+ <MemberSignature Language="C++ CX" Value=" virtual bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A item) = System::Collections::Generic::ICollection&lt;A&gt;::Remove;" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Remove(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.Generic.IEnumerator&lt;A&gt; IEnumerable&lt;A&gt;.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1&lt;!A&gt; System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.IEnumerable`1.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerator&lt;A&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.IEnumerator&lt;A&gt;.Current">
+ <MemberSignature Language="C#" Value="A System.Collections.Generic.IEnumerator&lt;A&gt;.Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance !A System.Collections.Generic.IEnumerator&lt;A&gt;.Current" />
+ <MemberSignature Language="C++ CX" Value="property A System.Collections.Generic.IEnumerator&lt;A&gt;.Current { A get(); };" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.IEnumerator`1.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerable.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.IEnumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerator.Current">
+ <MemberSignature Language="C#" Value="object System.Collections.IEnumerator.Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.IEnumerator.Current" />
+ <MemberSignature Language="C++ CX" Value="property Platform::Object ^ System.Collections.IEnumerator.Current { Platform::Object ^ get(); };" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.IEnumerator.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Color.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Color.xml
new file mode 100644
index 00000000..84afcc12
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Color.xml
@@ -0,0 +1,82 @@
+<Type Name="Color" FullName="Mono.DocTest.Color">
+ <TypeSignature Language="C#" Value="public enum Color" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Color extends System.Enum" />
+ <TypeSignature Language="C++ CX" Value="public enum class Color" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnotherGreen">
+ <MemberSignature Language="C#" Value="AnotherGreen" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color AnotherGreen = int32(2)" />
+ <MemberSignature Language="C++ CX" Value="AnotherGreen" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Blue">
+ <MemberSignature Language="C#" Value="Blue" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Blue = int32(1)" />
+ <MemberSignature Language="C++ CX" Value="Blue" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>1</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Green">
+ <MemberSignature Language="C#" Value="Green" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Green = int32(2)" />
+ <MemberSignature Language="C++ CX" Value="Green" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Red">
+ <MemberSignature Language="C#" Value="Red" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Red = int32(0)" />
+ <MemberSignature Language="C++ CX" Value="Red" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>0</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/D.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/D.xml
new file mode 100644
index 00000000..fffe57fa
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/D.xml
@@ -0,0 +1,23 @@
+<Type Name="D" FullName="Mono.DocTest.D">
+ <TypeSignature Language="C#" Value="public delegate dynamic D(Func&lt;string,dynamic,object&gt; value);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed D extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.String,System.Object,System.Object&gt;" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocAttribute.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocAttribute.xml
new file mode 100644
index 00000000..094bb0c4
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocAttribute.xml
@@ -0,0 +1,105 @@
+<Type Name="DocAttribute" FullName="Mono.DocTest.DocAttribute">
+ <TypeSignature Language="C#" Value="public class DocAttribute : Attribute" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DocAttribute extends System.Attribute" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Attribute</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.AttributeUsage(System.AttributeTargets.All)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public DocAttribute (string docs);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string docs) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; DocAttribute(Platform::String ^ docs);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="docs" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="docs">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Field">
+ <MemberSignature Language="C#" Value="public bool Field;" />
+ <MemberSignature Language="ILAsm" Value=".field public bool Field" />
+ <MemberSignature Language="C++ CX" Value="public: bool Field;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="FlagsEnum">
+ <MemberSignature Language="C#" Value="public ConsoleModifiers FlagsEnum;" />
+ <MemberSignature Language="ILAsm" Value=".field public valuetype System.ConsoleModifiers FlagsEnum" />
+ <MemberSignature Language="C++ CX" Value="public: ConsoleModifiers FlagsEnum;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.ConsoleModifiers</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="NonFlagsEnum">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Color NonFlagsEnum;" />
+ <MemberSignature Language="ILAsm" Value=".field public valuetype Mono.DocTest.Color NonFlagsEnum" />
+ <MemberSignature Language="C++ CX" Value="public: Mono::DocTest::Color NonFlagsEnum;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Property">
+ <MemberSignature Language="C#" Value="public Type Property { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Type Property" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; property Platform::Type ^ Property { Platform::Type ^ get(); void set(Platform::Type ^ value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Type</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocValueType.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocValueType.xml
new file mode 100644
index 00000000..96340188
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/DocValueType.xml
@@ -0,0 +1,59 @@
+<Type Name="DocValueType" FullName="Mono.DocTest.DocValueType">
+ <TypeSignature Language="C#" Value="public struct DocValueType : Mono.DocTest.IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit DocValueType extends System.ValueType implements class Mono.DocTest.IProcess" />
+ <TypeSignature Language="C++ CX" Value="public value class DocValueType : Mono::DocTest::IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.IProcess</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void M(int i);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="total">
+ <MemberSignature Language="C#" Value="public int total;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 total" />
+ <MemberSignature Language="C++ CX" Value="public: int total;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/IProcess.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/IProcess.xml
new file mode 100644
index 00000000..7ea6ad43
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/IProcess.xml
@@ -0,0 +1,15 @@
+<Type Name="IProcess" FullName="Mono.DocTest.IProcess">
+ <TypeSignature Language="C#" Value="public interface IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IProcess" />
+ <TypeSignature Language="C++ CX" Value="public interface class IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/UseLists.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/UseLists.xml
new file mode 100644
index 00000000..27b80284
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/UseLists.xml
@@ -0,0 +1,169 @@
+<Type Name="UseLists" FullName="Mono.DocTest.UseLists">
+ <TypeSignature Language="C#" Value="public class UseLists" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit UseLists extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public UseLists ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; UseLists();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetValues&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList&lt;T&gt; GetValues&lt;T&gt; (T value) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1&lt;!!T&gt; GetValues&lt;struct .ctor (class System.ValueType) T&gt;(!!T value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.MyList&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="value" Type="T" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (Mono.DocTest.Generic.MyList&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class Mono.DocTest.Generic.MyList`1&lt;int32&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="Mono.DocTest.Generic.MyList&lt;System.Int32&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1&lt;int32&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Int32&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List&lt;Predicate&lt;int&gt;&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1&lt;class System.Predicate`1&lt;int32&gt;&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Predicate&lt;System.Int32&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public void Process&lt;T&gt; (System.Collections.Generic.List&lt;Predicate&lt;T&gt;&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process&lt;T&gt;(class System.Collections.Generic.List`1&lt;class System.Predicate`1&lt;!!T&gt;&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Predicate&lt;T&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="UseHelper&lt;T,U,V&gt;">
+ <MemberSignature Language="C#" Value="public void UseHelper&lt;T,U,V&gt; (Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; helper);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper&lt;T, U, V&gt;(class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!!T, !!U, !!V&gt; helper) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="helper" Type="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <param name="helper">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Del.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Del.xml
new file mode 100644
index 00000000..89e90baf
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Del.xml
@@ -0,0 +1,23 @@
+<Type Name="Widget+Del" FullName="Mono.DocTest.Widget+Del">
+ <TypeSignature Language="C#" Value="public delegate void Widget.Del(int i);" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Del extends System.MulticastDelegate" />
+ <TypeSignature Language="C++ CX" Value="public: delegate void Widget::Del(int i);" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Direction.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Direction.xml
new file mode 100644
index 00000000..0d001902
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+Direction.xml
@@ -0,0 +1,87 @@
+<Type Name="Widget+Direction" FullName="Mono.DocTest.Widget+Direction">
+ <TypeSignature Language="C#" Value="protected internal enum Widget.Direction" />
+ <TypeSignature Language="ILAsm" Value=".class nested protected auto ansi sealed Widget/Direction extends System.Enum" />
+ <TypeSignature Language="C++ CX" Value="public protected enum class Widget::Direction" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Flags</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="East">
+ <MemberSignature Language="C#" Value="East" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction East = int32(2)" />
+ <MemberSignature Language="C++ CX" Value="East" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="North">
+ <MemberSignature Language="C#" Value="North" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction North = int32(0)" />
+ <MemberSignature Language="C++ CX" Value="North" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>0</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="South">
+ <MemberSignature Language="C#" Value="South" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction South = int32(1)" />
+ <MemberSignature Language="C++ CX" Value="South" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>1</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="West">
+ <MemberSignature Language="C#" Value="West" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction West = int32(3)" />
+ <MemberSignature Language="C++ CX" Value="West" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>3</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+IMenuItem.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+IMenuItem.xml
new file mode 100644
index 00000000..1d4952d8
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+IMenuItem.xml
@@ -0,0 +1,50 @@
+<Type Name="Widget+IMenuItem" FullName="Mono.DocTest.Widget+IMenuItem">
+ <TypeSignature Language="C#" Value="public interface Widget.IMenuItem" />
+ <TypeSignature Language="ILAsm" Value=".class nested public interface auto ansi abstract Widget/IMenuItem" />
+ <TypeSignature Language="C++ CX" Value="public: interface class Widget::IMenuItem" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="A">
+ <MemberSignature Language="C#" Value="public void A ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void A() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void A();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="B">
+ <MemberSignature Language="C#" Value="public int B { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 B" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; property int B { int get(); void set(int value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
new file mode 100644
index 00000000..312c8d46
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
@@ -0,0 +1,32 @@
+<Type Name="Widget+NestedClass+Double+Triple+Quadruple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple.Quadruple" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple/Quadruple extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Quadruple ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Quadruple();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
new file mode 100644
index 00000000..1eeee106
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
@@ -0,0 +1,32 @@
+<Type Name="Widget+NestedClass+Double+Triple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Triple ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Triple();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double.xml
new file mode 100644
index 00000000..113c7779
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass+Double.xml
@@ -0,0 +1,32 @@
+<Type Name="Widget+NestedClass+Double" FullName="Mono.DocTest.Widget+NestedClass+Double">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Double ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Double();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass.xml
new file mode 100644
index 00000000..53370a54
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass.xml
@@ -0,0 +1,67 @@
+<Type Name="Widget+NestedClass" FullName="Mono.DocTest.Widget+NestedClass">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NestedClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; NestedClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void M(int i);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="value">
+ <MemberSignature Language="C#" Value="public int value;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 value" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass`1.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass`1.xml
new file mode 100644
index 00000000..b1f393be
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget+NestedClass`1.xml
@@ -0,0 +1,71 @@
+<Type Name="Widget+NestedClass&lt;T&gt;" FullName="Mono.DocTest.Widget+NestedClass&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass&lt;T&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass`1&lt;T&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NestedClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; NestedClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; void M(int i);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="value">
+ <MemberSignature Language="C#" Value="public int value;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 value" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml
new file mode 100644
index 00000000..3e773ca9
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/Mono.DocTest/Widget.xml
@@ -0,0 +1,873 @@
+<Type Name="Widget" FullName="Mono.DocTest.Widget">
+ <TypeSignature Language="C#" Value="public class Widget : Mono.DocTest.IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Widget extends System.Object implements class Mono.DocTest.IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.IProcess</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Widget ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Widget();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Widget (Converter&lt;string,string&gt; c);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Converter`2&lt;string, string&gt; c) cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="c" Type="System.Converter&lt;System.String,System.String&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="c">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Widget (string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string s) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Widget(Platform::String ^ s);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="AnEvent">
+ <MemberSignature Language="C#" Value="public event Mono.DocTest.Widget.Del AnEvent;" />
+ <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnEvent" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; event Mono::DocTest::Widget::Del ^ AnEvent;" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Del event")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>add: Mono.DocTest.Doc("Del add accessor")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>remove: Mono.DocTest.Doc("Del remove accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Del</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="AnotherEvent">
+ <MemberSignature Language="C#" Value="protected event Mono.DocTest.Widget.Del AnotherEvent;" />
+ <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnotherEvent" />
+ <MemberSignature Language="C++ CX" Value="protected:&#xA; event Mono::DocTest::Widget::Del ^ AnotherEvent;" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Del</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="array1">
+ <MemberSignature Language="C#" Value="public long[] array1;" />
+ <MemberSignature Language="ILAsm" Value=".field public int64[] array1" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int64[]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="array2">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Widget[,] array2;" />
+ <MemberSignature Language="ILAsm" Value=".field public class Mono.DocTest.Widget[,] array2" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget[,]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="classCtorError">
+ <MemberSignature Language="C#" Value="public static readonly string[] classCtorError;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly string[] classCtorError" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String[]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Default">
+ <MemberSignature Language="C#" Value="public void Default (int a = 1, int b = 2);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Default(int32 a, int32 b) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.Int32" />
+ <Parameter Name="b" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Default">
+ <MemberSignature Language="C#" Value="public void Default (string a = &quot;a&quot;, char b = 'b');" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Default(string a, char b) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.String" />
+ <Parameter Name="b" Type="System.Char" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="defaultColor">
+ <MemberSignature Language="C#" Value="protected static Mono.DocTest.Color defaultColor;" />
+ <MemberSignature Language="ILAsm" Value=".field family static valuetype Mono.DocTest.Color defaultColor" />
+ <MemberSignature Language="C++ CX" Value="protected: static Mono::DocTest::Color defaultColor;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic0">
+ <MemberSignature Language="C#" Value="public dynamic Dynamic0 (dynamic a, dynamic b);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance object Dynamic0(object a, object b) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Platform::Object ^ Dynamic0(Platform::Object ^ a, Platform::Object ^ b);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.Object" />
+ <Parameter Name="b" Type="System.Object" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic1">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.Dictionary&lt;dynamic,string&gt; Dynamic1 (System.Collections.Generic.Dictionary&lt;dynamic,string&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.Dictionary`2&lt;object, string&gt; Dynamic1(class System.Collections.Generic.Dictionary`2&lt;object, string&gt; value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.Dictionary&lt;System.Object,System.String&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Collections.Generic.Dictionary&lt;System.Object,System.String&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic2">
+ <MemberSignature Language="C#" Value="public Func&lt;string,dynamic&gt; Dynamic2 (Func&lt;string,dynamic&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Func`2&lt;string, object&gt; Dynamic2(class System.Func`2&lt;string, object&gt; value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.String,System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.String,System.Object&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic3">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic&gt;,Func&lt;dynamic,string&gt;&gt; Dynamic3 (Func&lt;Func&lt;string,dynamic&gt;,Func&lt;dynamic,string&gt;&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Func`2&lt;class System.Func`2&lt;string, object&gt;, class System.Func`2&lt;object, string&gt;&gt; Dynamic3(class System.Func`2&lt;class System.Func`2&lt;string, object&gt;, class System.Func`2&lt;object, string&gt;&gt; value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object&gt;,System.Func&lt;System.Object,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.Func&lt;System.String,System.Object&gt;,System.Func&lt;System.Object,System.String&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicE1">
+ <MemberSignature Language="C#" Value="public event Func&lt;dynamic&gt; DynamicE1;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.Func`1&lt;object&gt; DynamicE1" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Obsolete("why not")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicE2">
+ <MemberSignature Language="C#" Value="public event Func&lt;dynamic&gt; DynamicE2;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.Func`1&lt;object&gt; DynamicE2" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicF">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic,string&gt;,Func&lt;dynamic,Func&lt;dynamic&gt;,string&gt;&gt; DynamicF;" />
+ <MemberSignature Language="ILAsm" Value=".field public class System.Func`2&lt;class System.Func`3&lt;string, object, string&gt;, class System.Func`3&lt;object, class System.Func`1&lt;object&gt;, string&gt;&gt; DynamicF" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object,System.String&gt;,System.Func&lt;System.Object,System.Func&lt;System.Object&gt;,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicP">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic,string&gt;,Func&lt;dynamic,Func&lt;dynamic&gt;,string&gt;&gt; DynamicP { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Func`2&lt;class System.Func`3&lt;string, object, string&gt;, class System.Func`3&lt;object, class System.Func`1&lt;object&gt;, string&gt;&gt; DynamicP" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object,System.String&gt;,System.Func&lt;System.Object,System.Func&lt;System.Object&gt;,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Height">
+ <MemberSignature Language="C#" Value="protected long Height { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int64 Height" />
+ <MemberSignature Language="C++ CX" Value="protected:&#xA; property long long Height { long long get(); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Height property")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int64</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Item">
+ <MemberSignature Language="C#" Value="public int this[int i] { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Item(int32)" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Item property")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>set: Mono.DocTest.Doc("Item property set accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Item">
+ <MemberSignature Language="C#" Value="public int this[string s, int i] { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Item(string, int32)" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="s" Type="System.String" />
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="s">To be added.</param>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M0">
+ <MemberSignature Language="C#" Value="public static void M0 ();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void M0() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; static void M0();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M1">
+ <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32&amp; f, valuetype Mono.DocTest.DocValueType&amp; v) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("normal DocAttribute", Field=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("return:DocAttribute", Property=typeof(Mono.DocTest.Widget))</AttributeName>
+ </Attribute>
+ </Attributes>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="c" Type="System.Char">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("c", FlagsEnum=System.ConsoleModifiers.Alt | System.ConsoleModifiers.Control)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ <Parameter Name="f" Type="System.Single&amp;" RefType="out">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("f", NonFlagsEnum=Mono.DocTest.Color.Red)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ <Parameter Name="v" Type="Mono.DocTest.DocValueType&amp;" RefType="ref">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("v")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <Docs>
+ <param name="c">To be added.</param>
+ <param name="f">To be added.</param>
+ <param name="v">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M2">
+ <MemberSignature Language="C#" Value="public void M2 (short[] x1, int[,] x2, long[][] x3);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M2(int16[] x1, int32[,] x2, int64[][] x3) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x1" Type="System.Int16[]" />
+ <Parameter Name="x2" Type="System.Int32[,]" />
+ <Parameter Name="x3" Type="System.Int64[][]" />
+ </Parameters>
+ <Docs>
+ <param name="x1">To be added.</param>
+ <param name="x2">To be added.</param>
+ <param name="x3">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M3">
+ <MemberSignature Language="C#" Value="protected void M3 (long[][] x3, Mono.DocTest.Widget[,,][] x4);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M3(int64[][] x3, class Mono.DocTest.Widget[,,][] x4) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x3" Type="System.Int64[][]" />
+ <Parameter Name="x4" Type="Mono.DocTest.Widget[,,][]" />
+ </Parameters>
+ <Docs>
+ <param name="x3">To be added.</param>
+ <param name="x4">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M4">
+ <MemberSignature Language="C#" Value="protected void M4 (char* pc, Mono.DocTest.Color** ppf);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M4(char* pc, valuetype Mono.DocTest.Color** ppf) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="pc" Type="System.Char*" />
+ <Parameter Name="ppf" Type="Mono.DocTest.Color**" />
+ </Parameters>
+ <Docs>
+ <param name="pc">To be added.</param>
+ <param name="ppf">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M5">
+ <MemberSignature Language="C#" Value="protected void M5 (void* pv, double*[,][] pd);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M5(void* pv, float64*[,][] pd) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="pv" Type="System.Void*" />
+ <Parameter Name="pd" Type="System.Double*[,][]" />
+ </Parameters>
+ <Docs>
+ <param name="pv">To be added.</param>
+ <param name="pd">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M6">
+ <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ <Parameter Name="args" Type="System.Object[]">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.ParamArray</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <param name="args">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M7">
+ <MemberSignature Language="C#" Value="public void M7 (Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple a);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M7(class Mono.DocTest.Widget/NestedClass/Double/Triple/Quadruple a) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="message">
+ <MemberSignature Language="C#" Value="public string message;" />
+ <MemberSignature Language="ILAsm" Value=".field public string message" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="monthlyAverage">
+ <MemberSignature Language="C#" Value="protected internal readonly double monthlyAverage;" />
+ <MemberSignature Language="ILAsm" Value=".field familyorassembly initonly float64 monthlyAverage" />
+ <MemberSignature Language="C++ CX" Value="protected public: initonly double monthlyAverage;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Addition">
+ <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget operator + (Mono.DocTest.Widget x1, Mono.DocTest.Widget x2);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_Addition(class Mono.DocTest.Widget x1, class Mono.DocTest.Widget x2) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x1" Type="Mono.DocTest.Widget" />
+ <Parameter Name="x2" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x1">To be added.</param>
+ <param name="x2">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Division">
+ <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_Division;" />
+ <MemberSignature Language="ILAsm" Value=".field public static class Mono.DocTest.Widget op_Division" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Explicit">
+ <MemberSignature Language="C#" Value="public static explicit operator int (Mono.DocTest.Widget x);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Implicit">
+ <MemberSignature Language="C#" Value="public static implicit operator long (Mono.DocTest.Widget x);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int64 op_Implicit(class Mono.DocTest.Widget x) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int64</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_UnaryPlus">
+ <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget operator + (Mono.DocTest.Widget x);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_UnaryPlus(class Mono.DocTest.Widget x) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="pCount">
+ <MemberSignature Language="C#" Value="public int* pCount;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32* pCount" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32*</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="PI">
+ <MemberSignature Language="C#" Value="protected internal const double PI = 3.14159;" />
+ <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3.14159)" />
+ <MemberSignature Language="C++ CX" Value="protected public: double PI = 3.14159;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <MemberValue>3.14159</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ppValues">
+ <MemberSignature Language="C#" Value="public float** ppValues;" />
+ <MemberSignature Language="ILAsm" Value=".field public float32** ppValues" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single**</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Width">
+ <MemberSignature Language="C#" Value="public int Width { get; protected set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Width" />
+ <MemberSignature Language="C++ CX" Value="public: property int Width { public:&#xA;int get(); protected:&#xA; void set(int value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Width property")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>get: Mono.DocTest.Doc("Width get accessor")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>set: Mono.DocTest.Doc("Width set accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="X">
+ <MemberSignature Language="C#" Value="protected internal short X { set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int16 X" />
+ <MemberSignature Language="C++ CX" Value="protected public:&#xA; property short X { void set(short value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int16</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Y">
+ <MemberSignature Language="C#" Value="protected internal double Y { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance float64 Y" />
+ <MemberSignature Language="C++ CX" Value="protected public:&#xA; property double Y { double get(); void set(double value); };" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/NoNamespace.xml b/mdoc/Test/en.expected-cppcx2/NoNamespace.xml
new file mode 100644
index 00000000..3e27ccd0
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/NoNamespace.xml
@@ -0,0 +1,32 @@
+<Type Name="NoNamespace" FullName="NoNamespace">
+ <TypeSignature Language="C#" Value="public class NoNamespace" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NoNamespace extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NoNamespace ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; NoNamespace();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/System/Action`1.xml b/mdoc/Test/en.expected-cppcx2/System/Action`1.xml
new file mode 100644
index 00000000..7560590f
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/System/Action`1.xml
@@ -0,0 +1,26 @@
+<Type Name="Action&lt;T&gt;" FullName="System.Action&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public delegate void Action&lt;T&gt;(T obj);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Action`1&lt;T&gt; extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="obj" Type="T" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="obj">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/System/Array.xml b/mdoc/Test/en.expected-cppcx2/System/Array.xml
new file mode 100644
index 00000000..84358acc
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/System/Array.xml
@@ -0,0 +1,110 @@
+<Type Name="Array" FullName="System.Array">
+ <TypeSignature Language="C#" Value="public class Array" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Array extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Array ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA; Array();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="AsReadOnly&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.ObjectModel.ReadOnlyCollection&lt;T&gt; AsReadOnly&lt;T&gt; (T[] array);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.ObjectModel.ReadOnlyCollection`1&lt;!!T&gt; AsReadOnly&lt;T&gt;(!!T[] array) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.ObjectModel.ReadOnlyCollection&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="T[]" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
+ <MemberSignature Language="C#" Value="public static TOutput[] ConvertAll&lt;TInput,TOutput&gt; (TInput[] array, Converter&lt;TInput,TOutput&gt; converter);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TOutput[] ConvertAll&lt;TInput, TOutput&gt;(!!TInput[] array, class System.Converter`2&lt;!!TInput, !!TOutput&gt; converter) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>TOutput[]</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="TInput" />
+ <TypeParameter Name="TOutput" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="TInput[]" />
+ <Parameter Name="converter" Type="System.Converter&lt;TInput,TOutput&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="TInput">To be added.</typeparam>
+ <typeparam name="TOutput">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <param name="converter">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Resize&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Resize&lt;T&gt; (ref T[] array, int newSize);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize&lt;T&gt;(!!T[]&amp; array, int32 newSize) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; static void Resize(Platform::Array &lt;T&gt; ^ &amp; array, int newSize);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="T[]&amp;" RefType="ref" />
+ <Parameter Name="newSize" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <param name="newSize">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/System/AsyncCallback.xml b/mdoc/Test/en.expected-cppcx2/System/AsyncCallback.xml
new file mode 100644
index 00000000..deb06e91
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/System/AsyncCallback.xml
@@ -0,0 +1,22 @@
+<Type Name="AsyncCallback" FullName="System.AsyncCallback">
+ <TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AsyncCallback extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="ar" Type="System.IAsyncResult" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="ar">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/System/Environment+SpecialFolder.xml b/mdoc/Test/en.expected-cppcx2/System/Environment+SpecialFolder.xml
new file mode 100644
index 00000000..6e6a9408
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/System/Environment+SpecialFolder.xml
@@ -0,0 +1,16 @@
+<Type Name="Environment+SpecialFolder" FullName="System.Environment+SpecialFolder">
+ <TypeSignature Language="C#" Value="public enum Environment.SpecialFolder" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Environment/SpecialFolder extends System.Enum" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/System/Environment.xml b/mdoc/Test/en.expected-cppcx2/System/Environment.xml
new file mode 100644
index 00000000..ba2dfd0f
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/System/Environment.xml
@@ -0,0 +1,71 @@
+<Type Name="Environment" FullName="System.Environment">
+ <TypeSignature Language="C#" Value="public static class Environment" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Environment extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="GetFolderPath">
+ <MemberSignature Language="C#" Value="public static string GetFolderPath (Environment.SpecialFolder folder);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetFolderPath(valuetype System.Environment/SpecialFolder folder) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="folder" Type="System.Environment+SpecialFolder" />
+ </Parameters>
+ <Docs>
+ <param name="folder">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="IsAligned&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static bool IsAligned&lt;T&gt; (this T[] vect, int index) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsAligned&lt;struct .ctor (class System.ValueType) T&gt;(!!T[] vect, int32 index) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; where T : value class[System::Runtime::CompilerServices::Extension]&#xA; static bool IsAligned(Platform::Array &lt;T&gt; ^ vect, int index);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="vect" Type="T[]" RefType="this" />
+ <Parameter Name="index" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="vect">To be added.</param>
+ <param name="index">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppcx2/index.xml b/mdoc/Test/en.expected-cppcx2/index.xml
new file mode 100644
index 00000000..ccb98255
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/index.xml
@@ -0,0 +1,225 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="DocTest" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="">
+ <Type Name="NoNamespace" Kind="Class" />
+ </Namespace>
+ <Namespace Name="Mono.DocTest">
+ <Type Name="Color" Kind="Enumeration" />
+ <Type Name="D" Kind="Delegate" />
+ <Type Name="DocAttribute" Kind="Class" />
+ <Type Name="DocValueType" Kind="Structure" />
+ <Type Name="IProcess" Kind="Interface" />
+ <Type Name="UseLists" Kind="Class" />
+ <Type Name="Widget" Kind="Class" />
+ <Type Name="Widget+Del" Kind="Delegate" />
+ <Type Name="Widget+Direction" Kind="Enumeration" />
+ <Type Name="Widget+IMenuItem" Kind="Interface" />
+ <Type Name="Widget+NestedClass" Kind="Class" />
+ <Type Name="Widget+NestedClass`1" DisplayName="Widget+NestedClass&lt;T&gt;" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double+Triple" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
+ </Namespace>
+ <Namespace Name="Mono.DocTest.Generic">
+ <Type Name="Extensions" Kind="Class" />
+ <Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
+ <Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
+ <Type Name="GenericBase`1+FooEventArgs" DisplayName="GenericBase&lt;U&gt;+FooEventArgs" Kind="Class" />
+ <Type Name="GenericBase`1+NestedCollection" DisplayName="GenericBase&lt;U&gt;+NestedCollection" Kind="Class" />
+ <Type Name="GenericBase`1+NestedCollection+Enumerator" DisplayName="GenericBase&lt;U&gt;+NestedCollection+Enumerator" Kind="Structure" />
+ <Type Name="IFoo`1" DisplayName="IFoo&lt;T&gt;" Kind="Interface" />
+ <Type Name="MyList`1" DisplayName="MyList&lt;T&gt;" Kind="Class" />
+ <Type Name="MyList`1+Helper`2" DisplayName="MyList&lt;T&gt;+Helper&lt;U,V&gt;" Kind="Class" />
+ <Type Name="MyList`2" DisplayName="MyList&lt;A,B&gt;" Kind="Class" />
+ </Namespace>
+ <Namespace Name="System">
+ <Type Name="Action`1" DisplayName="Action&lt;T&gt;" Kind="Delegate" />
+ <Type Name="Array" Kind="Class" />
+ <Type Name="AsyncCallback" Kind="Delegate" />
+ <Type Name="Environment" Kind="Class" />
+ <Type Name="Environment+SpecialFolder" Kind="Enumeration" />
+ </Namespace>
+ </Types>
+ <Title>DocTest</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:Mono.DocTest.Generic.IFoo`1" />
+ </Targets>
+ <Member MemberName="Bar&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Bar&lt;T&gt; (this Mono.DocTest.Generic.IFoo&lt;T&gt; self, string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar&lt;T&gt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt; self, string s) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA;[System::Runtime::CompilerServices::Extension]&#xA; static void Bar(Mono::DocTest::Generic::IFoo&lt;T&gt; ^ self, Platform::String ^ s);" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="Mono.DocTest.Generic.IFoo&lt;T&gt;" RefType="this" />
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.Bar``1(Mono.DocTest.Generic.IFoo{``0},System.String)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Collections.Generic.IEnumerable`1" />
+ </Targets>
+ <Member MemberName="ForEach&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt; (this System.Collections.Generic.IEnumerable&lt;T&gt; self, Action&lt;T&gt; a);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach&lt;T&gt;(class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; self, class System.Action`1&lt;!!T&gt; a) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="System.Collections.Generic.IEnumerable&lt;T&gt;" RefType="this" />
+ <Parameter Name="a" Type="System.Action&lt;T&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ForEach``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Collections.Generic.IEnumerable`1" />
+ </Targets>
+ <Member MemberName="ToDouble">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;double&gt; ToDouble (this System.Collections.Generic.IEnumerable&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;float64&gt; ToDouble(class System.Collections.Generic.IEnumerable`1&lt;int32&gt; list) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.IEnumerable&lt;System.Int32&gt;" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToDouble(System.Collections.Generic.IEnumerable{System.Int32})" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:Mono.DocTest.Generic.IFoo`1" />
+ </Targets>
+ <Member MemberName="ToDouble&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static double ToDouble&lt;T&gt; (this T val) where T : Mono.DocTest.Generic.IFoo&lt;T&gt;;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble&lt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt;) T&gt;(!!T val) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; where T : Mono::DocTest::Generic::IFoo&lt;T&gt;[System::Runtime::CompilerServices::Extension]&#xA; static double ToDouble(T val);" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;T&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="val" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="val">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToDouble``1(``0)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="System.Object" />
+ </Targets>
+ <Member MemberName="ToEnumerable&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;T&gt; ToEnumerable&lt;T&gt; (this T self);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; ToEnumerable&lt;T&gt;(!!T self) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToEnumerable``1(``0)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Array" />
+ </Targets>
+ <Member MemberName="IsAligned&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static bool IsAligned&lt;T&gt; (this T[] vect, int index) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsAligned&lt;struct .ctor (class System.ValueType) T&gt;(!!T[] vect, int32 index) cil managed" />
+ <MemberSignature Language="C++ CX" Value="public:&#xA;generic &lt;typename T&gt;&#xA; where T : value class[System::Runtime::CompilerServices::Extension]&#xA; static bool IsAligned(Platform::Array &lt;T&gt; ^ vect, int index);" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="vect" Type="T[]" RefType="this" />
+ <Parameter Name="index" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="vect">To be added.</param>
+ <param name="index">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="System.Environment" Member="M:System.Environment.IsAligned``1(``0[],System.Int32)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
+</Overview>
diff --git a/mdoc/Test/en.expected-cppcx2/ns-.xml b/mdoc/Test/en.expected-cppcx2/ns-.xml
new file mode 100644
index 00000000..36dfeb30
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/ns-.xml
@@ -0,0 +1,6 @@
+<Namespace Name="">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.Generic.xml b/mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.Generic.xml
new file mode 100644
index 00000000..0d3e7924
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.Generic.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Mono.DocTest.Generic">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.xml b/mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.xml
new file mode 100644
index 00000000..96ab3e78
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/ns-Mono.DocTest.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Mono.DocTest">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppcx2/ns-System.xml b/mdoc/Test/en.expected-cppcx2/ns-System.xml
new file mode 100644
index 00000000..c9692742
--- /dev/null
+++ b/mdoc/Test/en.expected-cppcx2/ns-System.xml
@@ -0,0 +1,6 @@
+<Namespace Name="System">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppwinrt/FrameworksIndex/One.xml b/mdoc/Test/en.expected-cppwinrt/FrameworksIndex/One.xml
new file mode 100644
index 00000000..a60754a0
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/FrameworksIndex/One.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Framework Name="One">
+ <Namespace Name="MyFramework.MyNamespace">
+ <Type Name="MyFramework.MyNamespace.MyClass" Id="T:MyFramework.MyNamespace.MyClass">
+ <Member Id="M:MyFramework.MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyFramework.MyNamespace.MyClass.Hello(System.Int32)" />
+ <Member Id="P:MyFramework.MyNamespace.MyClass.MyProperty" />
+ <Member Id="P:MyFramework.MyNamespace.MyClass.OnlyInClassic" />
+ </Type>
+ <Type Name="MyFramework.MyNamespace.MyClassExtensions" Id="T:MyFramework.MyNamespace.MyClassExtensions">
+ <Member Id="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Type>
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyNamespace.MyClass" Id="T:MyNamespace.MyClass">
+ <Member Id="M:MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyNamespace.MyClass.SomeMethod``1" />
+ </Type>
+ </Namespace>
+</Framework> \ No newline at end of file
diff --git a/mdoc/Test/en.expected-cppwinrt/FrameworksIndex/Two.xml b/mdoc/Test/en.expected-cppwinrt/FrameworksIndex/Two.xml
new file mode 100644
index 00000000..b697626e
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/FrameworksIndex/Two.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Framework Name="Two">
+ <Namespace Name="MyFramework.MyOtherNamespace">
+ <Type Name="MyFramework.MyOtherNamespace.MyOtherClass" Id="T:MyFramework.MyOtherNamespace.MyOtherClass">
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.#ctor" />
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.Hello(System.Double)" />
+ <Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.Hello(System.Int32)" />
+ <Member Id="P:MyFramework.MyOtherNamespace.MyOtherClass.MyProperty" />
+ </Type>
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyNamespace.MyClass" Id="T:MyNamespace.MyClass">
+ <Member Id="M:MyNamespace.MyClass.#ctor" />
+ <Member Id="M:MyNamespace.MyClass.SomeMethod``1" />
+ </Type>
+ </Namespace>
+</Framework> \ No newline at end of file
diff --git a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml
new file mode 100644
index 00000000..54558ac8
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClass.xml
@@ -0,0 +1,90 @@
+<Type Name="MyClass" FullName="MyFramework.MyNamespace.MyClass">
+ <TypeSignature Language="C#" Value="public class MyClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class MyClass" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" MyClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (int value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="float Hello(int value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyProperty">
+ <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="OnlyInClassic">
+ <MemberSignature Language="C#" Value="public double OnlyInClassic { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance float64 OnlyInClassic" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml
new file mode 100644
index 00000000..afdd810f
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyNamespace/MyClassExtensions.xml
@@ -0,0 +1,40 @@
+<Type Name="MyClassExtensions" FullName="MyFramework.MyNamespace.MyClassExtensions">
+ <TypeSignature Language="C#" Value="public static class MyClassExtensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit MyClassExtensions extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="class MyClassExtensions abstract sealed" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml
new file mode 100644
index 00000000..ff58941a
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/MyFramework.MyOtherNamespace/MyOtherClass.xml
@@ -0,0 +1,95 @@
+<Type Name="MyOtherClass" FullName="MyFramework.MyOtherNamespace.MyOtherClass">
+ <TypeSignature Language="C#" Value="public class MyOtherClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyOtherClass extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class MyOtherClass" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyOtherClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" MyOtherClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (double value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(float64 value) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="float Hello(double value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Double" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Hello">
+ <MemberSignature Language="C#" Value="public float Hello (int value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance float32 Hello(int32 value) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="float Hello(int value);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyProperty">
+ <MemberSignature Language="C#" Value="public string MyProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance string MyProperty" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-DropNS-classic-secondary</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt/MyNamespace/MyClass.xml b/mdoc/Test/en.expected-cppwinrt/MyNamespace/MyClass.xml
new file mode 100644
index 00000000..8375e9d2
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/MyNamespace/MyClass.xml
@@ -0,0 +1,57 @@
+<Type Name="MyClass" FullName="MyNamespace.MyClass">
+ <TypeSignature Language="C#" Value="public class MyClass" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyClass extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class MyClass" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" MyClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="SomeMethod&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public string SomeMethod&lt;T&gt; ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance string SomeMethod&lt;T&gt;() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename T&gt;&#xA; std::wstring SomeMethod();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyName>DocTest-addNonGeneric</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt/index.xml b/mdoc/Test/en.expected-cppwinrt/index.xml
new file mode 100644
index 00000000..6abf1402
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/index.xml
@@ -0,0 +1,72 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="DocTest-DropNS-classic" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ <Assembly Name="DocTest-DropNS-classic-secondary" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ <Assembly Name="DocTest-addNonGeneric" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="MyFramework.MyNamespace">
+ <Type Name="MyClass" Kind="Class" />
+ <Type Name="MyClassExtensions" Kind="Class" />
+ </Namespace>
+ <Namespace Name="MyFramework.MyOtherNamespace">
+ <Type Name="MyOtherClass" Kind="Class" />
+ </Namespace>
+ <Namespace Name="MyNamespace">
+ <Type Name="MyClass" Kind="Class" />
+ </Namespace>
+ </Types>
+ <Title>Untitled</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:MyFramework.MyNamespace.MyClass" />
+ </Targets>
+ <Member MemberName="AnExtension">
+ <MemberSignature Language="C#" Value="public static bool AnExtension (this MyFramework.MyNamespace.MyClass value);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool AnExtension(class MyFramework.MyNamespace.MyClass value) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="MyFramework.MyNamespace.MyClass" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="MyFramework.MyNamespace.MyClassExtensions" Member="M:MyFramework.MyNamespace.MyClassExtensions.AnExtension(MyFramework.MyNamespace.MyClass)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
+</Overview>
diff --git a/mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyNamespace.xml b/mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyNamespace.xml
new file mode 100644
index 00000000..74df75af
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyOtherNamespace.xml b/mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyOtherNamespace.xml
new file mode 100644
index 00000000..8bdef1c7
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/ns-MyFramework.MyOtherNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyFramework.MyOtherNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppwinrt/ns-MyNamespace.xml b/mdoc/Test/en.expected-cppwinrt/ns-MyNamespace.xml
new file mode 100644
index 00000000..bd8d4316
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt/ns-MyNamespace.xml
@@ -0,0 +1,6 @@
+<Namespace Name="MyNamespace">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml
new file mode 100644
index 00000000..1bf2ead6
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Extensions.xml
@@ -0,0 +1,141 @@
+<Type Name="Extensions" FullName="Mono.DocTest.Generic.Extensions">
+ <TypeSignature Language="C#" Value="public static class Extensions" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Extensions extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="class Extensions abstract sealed" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="Bar&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Bar&lt;T&gt; (this Mono.DocTest.Generic.IFoo&lt;T&gt; self, string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar&lt;T&gt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt; self, string s) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="Mono.DocTest.Generic.IFoo&lt;T&gt;" RefType="this" />
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ForEach&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt; (this System.Collections.Generic.IEnumerable&lt;T&gt; self, Action&lt;T&gt; a);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach&lt;T&gt;(class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; self, class System.Action`1&lt;!!T&gt; a) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="System.Collections.Generic.IEnumerable&lt;T&gt;" RefType="this" />
+ <Parameter Name="a" Type="System.Action&lt;T&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToDouble">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;double&gt; ToDouble (this System.Collections.Generic.IEnumerable&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;float64&gt; ToDouble(class System.Collections.Generic.IEnumerable`1&lt;int32&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.IEnumerable&lt;System.Int32&gt;" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToDouble&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static double ToDouble&lt;T&gt; (this T val) where T : Mono.DocTest.Generic.IFoo&lt;T&gt;;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble&lt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt;) T&gt;(!!T val) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;T&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="val" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="val">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ToEnumerable&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;T&gt; ToEnumerable&lt;T&gt; (this T self);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; ToEnumerable&lt;T&gt;(!!T self) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Func`2.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Func`2.xml
new file mode 100644
index 00000000..2d8dcf09
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/Func`2.xml
@@ -0,0 +1,64 @@
+<Type Name="Func&lt;TArg,TRet&gt;" FullName="Mono.DocTest.Generic.Func&lt;TArg,TRet&gt;">
+ <TypeSignature Language="C#" Value="public delegate TRet Func&lt;in TArg,out TRet&gt;(TArg a) where TArg : Exception;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Func`2&lt;(class System.Exception) - TArg, + TRet&gt; extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="TArg">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("arg!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Constraints>
+ <ParameterAttribute>Contravariant</ParameterAttribute>
+ <BaseTypeName>System.Exception</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ <TypeParameter Name="TRet">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("ret!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Constraints>
+ <ParameterAttribute>Covariant</ParameterAttribute>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("method")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters>
+ <Parameter Name="a" Type="TArg">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("arg-actual")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>TRet</ReturnType>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("return", Field=false)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </ReturnValue>
+ <Docs>
+ <typeparam name="TArg">To be added.</typeparam>
+ <typeparam name="TRet">To be added.</typeparam>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
new file mode 100644
index 00000000..ca321ae4
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.xml
@@ -0,0 +1,35 @@
+<Type Name="GenericBase&lt;U&gt;+FooEventArgs" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+FooEventArgs">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;.FooEventArgs : EventArgs" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/FooEventArgs&lt;U&gt; extends System.EventArgs" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.EventArgs</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public FooEventArgs ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" FooEventArgs();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
new file mode 100644
index 00000000..5f23c02a
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.xml
@@ -0,0 +1,21 @@
+<Type Name="GenericBase&lt;U&gt;+NestedCollection+Enumerator" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+NestedCollection+Enumerator">
+ <TypeSignature Language="C#" Value="protected internal struct GenericBase&lt;U&gt;.NestedCollection.Enumerator" />
+ <TypeSignature Language="ILAsm" Value=".class nested protected sequential ansi sealed beforefieldinit GenericBase`1/NestedCollection/Enumerator&lt;U&gt; extends System.ValueType" />
+ <TypeSignature Language="C++ WINRT" Value="struct GenericBase&lt;U&gt;::NestedCollection::Enumerator" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
new file mode 100644
index 00000000..94b96ef0
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1+NestedCollection.xml
@@ -0,0 +1,36 @@
+<Type Name="GenericBase&lt;U&gt;+NestedCollection" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;+NestedCollection">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;.NestedCollection" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit GenericBase`1/NestedCollection&lt;U&gt; extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class GenericBase&lt;U&gt;::NestedCollection" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NestedCollection ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" NestedCollection();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml
new file mode 100644
index 00000000..0ba0b7aa
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/GenericBase`1.xml
@@ -0,0 +1,151 @@
+<Type Name="GenericBase&lt;U&gt;" FullName="Mono.DocTest.Generic.GenericBase&lt;U&gt;">
+ <TypeSignature Language="C#" Value="public class GenericBase&lt;U&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit GenericBase`1&lt;U&gt; extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA;[Windows::Foundation::Metadata::WebHostHidden]&#xA;class GenericBase" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public GenericBase ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" GenericBase();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="BaseMethod&lt;S&gt;">
+ <MemberSignature Language="C#" Value="public U BaseMethod&lt;S&gt; (S genericParameter);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance !U BaseMethod&lt;S&gt;(!!S genericParameter) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename S&gt;&#xA; U BaseMethod(S genericParameter);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>U</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="S">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("S")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="genericParameter" Type="S" />
+ </Parameters>
+ <Docs>
+ <typeparam name="S">To be added.</typeparam>
+ <param name="genericParameter">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ConstField1">
+ <MemberSignature Language="C#" Value="public const int ConstField1;" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal int32 ConstField1" />
+ <MemberSignature Language="C++ WINRT" Value="int ConstField1;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ItemChanged">
+ <MemberSignature Language="C#" Value="public event Action&lt;Mono.DocTest.Generic.MyList&lt;U&gt;,Mono.DocTest.Generic.MyList&lt;U&gt;.Helper&lt;U,U&gt;&gt; ItemChanged;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.Action`2&lt;class Mono.DocTest.Generic.MyList`1&lt;!U&gt;, class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!U, !U, !U&gt;&gt; ItemChanged" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Action&lt;Mono.DocTest.Generic.MyList&lt;U&gt;,Mono.DocTest.Generic.MyList&lt;U&gt;+Helper&lt;U,U&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MyEvent">
+ <MemberSignature Language="C#" Value="public event EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;U&gt;.FooEventArgs&gt; MyEvent;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.EventHandler`1&lt;class Mono.DocTest.Generic.GenericBase`1/FooEventArgs&lt;!U&gt;&gt; MyEvent" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.EventHandler&lt;Mono.DocTest.Generic.GenericBase&lt;U&gt;+FooEventArgs&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Explicit">
+ <MemberSignature Language="C#" Value="public static explicit operator U (Mono.DocTest.Generic.GenericBase&lt;U&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname !U op_Explicit(class Mono.DocTest.Generic.GenericBase`1&lt;!U&gt; list) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" static explicit operator U(Mono::DocTest::Generic::GenericBase&lt;U&gt; const &amp; list);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>U</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="Mono.DocTest.Generic.GenericBase&lt;U&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="StaticField1">
+ <MemberSignature Language="C#" Value="public static readonly Mono.DocTest.Generic.GenericBase&lt;U&gt; StaticField1;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly class Mono.DocTest.Generic.GenericBase`1&lt;!U&gt; StaticField1" />
+ <MemberSignature Language="C++ WINRT" Value="static initonly Mono::DocTest::Generic::GenericBase&lt;U&gt; StaticField1;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.GenericBase&lt;U&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml
new file mode 100644
index 00000000..c3ed871d
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/IFoo`1.xml
@@ -0,0 +1,47 @@
+<Type Name="IFoo&lt;T&gt;" FullName="Mono.DocTest.Generic.IFoo&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public interface IFoo&lt;T&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IFoo`1&lt;T&gt;" />
+ <TypeSignature Language="C++ WINRT" Value="template &lt;typename T&gt;&#xA;__interface IFoo" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Interfaces />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="Method&lt;U&gt;">
+ <MemberSignature Language="C#" Value="public T Method&lt;U&gt; (T t, U u);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance !T Method&lt;U&gt;(!T t, !!U u) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; T Method(T t, U u);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>T</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml
new file mode 100644
index 00000000..bc6635e3
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1+Helper`2.xml
@@ -0,0 +1,64 @@
+<Type Name="MyList&lt;T&gt;+Helper&lt;U,V&gt;" FullName="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;T&gt;.Helper&lt;U,V&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit MyList`1/Helper`2&lt;T, U, V&gt; extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="template &lt;typename U, typename V&gt;&#xA;[Windows::Foundation::Metadata::WebHostHidden]&#xA;class MyList&lt;T&gt;::Helper" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Helper ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Helper();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="UseT">
+ <MemberSignature Language="C#" Value="public void UseT (T a, U b, V c);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseT(!T a, !U b, !V c) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void UseT(T a, U b, V c);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="T" />
+ <Parameter Name="b" Type="U" />
+ <Parameter Name="c" Type="V" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <param name="c">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml
new file mode 100644
index 00000000..5497edfc
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`1.xml
@@ -0,0 +1,211 @@
+<Type Name="MyList&lt;T&gt;" FullName="Mono.DocTest.Generic.MyList&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;T&gt; : Mono.DocTest.Generic.GenericBase&lt;T&gt;, System.Collections.Generic.IEnumerable&lt;int[]&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`1&lt;T&gt; extends Mono.DocTest.Generic.GenericBase`1&lt;!T&gt; implements class System.Collections.Generic.IEnumerable`1&lt;int32[]&gt;, class System.Collections.IEnumerable" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Type Parameter!")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>Mono.DocTest.Generic.GenericBase&lt;T&gt;</BaseTypeName>
+ <BaseTypeArguments>
+ <BaseTypeArgument TypeParamName="U">T</BaseTypeArgument>
+ </BaseTypeArguments>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerable&lt;System.Int32[]&gt;</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyList ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" MyList();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetEnumerator">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerator&lt;int[]&gt; GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1&lt;int32[]&gt; GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.IEnumerable`1.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerator&lt;System.Int32[]&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetHelper&lt;U,V&gt;">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; GetHelper&lt;U,V&gt; ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!T, !!U, !!V&gt; GetHelper&lt;U, V&gt;() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U, typename V&gt;&#xA; Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; GetHelper();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters />
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Method&lt;U&gt;">
+ <MemberSignature Language="C#" Value="public void Method&lt;U&gt; (T t, U u);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Method&lt;U&gt;(!T t, !!U u) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; void Method(T t, U u);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="RefMethod&lt;U&gt;">
+ <MemberSignature Language="C#" Value="public void RefMethod&lt;U&gt; (ref T t, ref U u);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RefMethod&lt;U&gt;(!T&amp; t, !!U&amp; u) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; void RefMethod(T &amp; t, U &amp; u);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="t" Type="T&amp;" RefType="ref" />
+ <Parameter Name="u" Type="U&amp;" RefType="ref" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="t">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerable.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.IEnumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Test">
+ <MemberSignature Language="C#" Value="public void Test (T t);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Test(!T t) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Test(T t);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="t" Type="T" />
+ </Parameters>
+ <Docs>
+ <param name="t">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="UseHelper&lt;U,V&gt;">
+ <MemberSignature Language="C#" Value="public void UseHelper&lt;U,V&gt; (Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; helper);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper&lt;U, V&gt;(class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!T, !!U, !!V&gt; helper) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const &amp; helper);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="helper" Type="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <param name="helper">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml
new file mode 100644
index 00000000..0b76c4a6
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest.Generic/MyList`2.xml
@@ -0,0 +1,438 @@
+<Type Name="MyList&lt;A,B&gt;" FullName="Mono.DocTest.Generic.MyList&lt;A,B&gt;">
+ <TypeSignature Language="C#" Value="public class MyList&lt;A,B&gt; : Mono.DocTest.Generic.GenericBase&lt;System.Collections.Generic.Dictionary&lt;A,B&gt;&gt;, Mono.DocTest.Generic.IFoo&lt;A&gt;, System.Collections.Generic.ICollection&lt;A&gt;, System.Collections.Generic.IEnumerable&lt;A&gt;, System.Collections.Generic.IEnumerator&lt;A&gt; where A : class, IList&lt;B&gt;, new() where B : class, A" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MyList`2&lt;class .ctor (class System.Collections.Generic.IList`1&lt;!B&gt;) A, class (!A) B&gt; extends Mono.DocTest.Generic.GenericBase`1&lt;class System.Collections.Generic.Dictionary`2&lt;!A, !B&gt;&gt; implements class Mono.DocTest.Generic.IFoo`1&lt;!A&gt;, class System.Collections.Generic.ICollection`1&lt;!A&gt;, class System.Collections.Generic.IEnumerable`1&lt;!A&gt;, class System.Collections.Generic.IEnumerator`1&lt;!A&gt;, class System.Collections.IEnumerable, class System.Collections.IEnumerator, class System.IDisposable" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="A">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ <InterfaceName>System.Collections.Generic.IList&lt;B&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ <TypeParameter Name="B">
+ <Constraints>
+ <ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
+ <BaseTypeName>A</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>Mono.DocTest.Generic.GenericBase&lt;System.Collections.Generic.Dictionary&lt;A,B&gt;&gt;</BaseTypeName>
+ <BaseTypeArguments>
+ <BaseTypeArgument TypeParamName="U">System.Collections.Generic.Dictionary&lt;A,B&gt;</BaseTypeArgument>
+ </BaseTypeArguments>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.ICollection&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerable&lt;A&gt;</InterfaceName>
+ </Interface>
+ <Interface>
+ <InterfaceName>System.Collections.Generic.IEnumerator&lt;A&gt;</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <typeparam name="A">To be added.</typeparam>
+ <typeparam name="B">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public MyList ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" MyList();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="CopyTo">
+ <MemberSignature Language="C#" Value="public void CopyTo (A[] array, int arrayIndex);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void CopyTo(!A[] array, int32 arrayIndex) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void CopyTo(std::Array &lt;A&gt; const &amp; array, int arrayIndex);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="array" Type="A[]" />
+ <Parameter Name="arrayIndex" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="array">To be added.</param>
+ <param name="arrayIndex">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Count">
+ <MemberSignature Language="C#" Value="public int Count { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Count" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.ICollection`1.Count</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Current">
+ <MemberSignature Language="C#" Value="public A Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance !A Current" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.IEnumerator`1.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dispose">
+ <MemberSignature Language="C#" Value="public void Dispose ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Dispose();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.IDisposable.Dispose</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Foo">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.KeyValuePair&lt;System.Collections.Generic.IEnumerable&lt;A&gt;,System.Collections.Generic.IEnumerable&lt;B&gt;&gt; Foo ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.KeyValuePair`2&lt;class System.Collections.Generic.IEnumerable`1&lt;!A&gt;, class System.Collections.Generic.IEnumerable`1&lt;!B&gt;&gt; Foo() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.KeyValuePair&lt;System.Collections.Generic.IEnumerable&lt;A&gt;,System.Collections.Generic.IEnumerable&lt;B&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetEnumerator">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.List&lt;A&gt;.Enumerator GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance valuetype System.Collections.Generic.List`1/Enumerator&lt;!A&gt; GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.List&lt;A&gt;+Enumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Mono.DocTest.Generic.IFoo&lt;A&gt;.Method&lt;U&gt;">
+ <MemberSignature Language="C#" Value="A IFoo&lt;A&gt;.Method&lt;U&gt; (A a, U u);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance !A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method&lt;U&gt;(!A a, !!U u) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename U&gt;&#xA; A Mono.DocTest.Generic.IFoo&lt;A&gt;.Method(A a, U u);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Mono.DocTest.Generic.IFoo`1.Method``1(`0,``0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="U" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="a" Type="A" />
+ <Parameter Name="u" Type="U" />
+ </Parameters>
+ <Docs>
+ <typeparam name="U">To be added.</typeparam>
+ <param name="a">To be added.</param>
+ <param name="u">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="MoveNext">
+ <MemberSignature Language="C#" Value="public bool MoveNext ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance bool MoveNext() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="bool MoveNext();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerator.MoveNext</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Reset">
+ <MemberSignature Language="C#" Value="public void Reset ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Reset() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Reset();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerator.Reset</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Add">
+ <MemberSignature Language="C#" Value="void ICollection&lt;A&gt;.Add (A item);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection&lt;A&gt;.Add(!A item) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void System.Collections.Generic.ICollection&lt;A&gt;.Add(A item);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Add(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Clear">
+ <MemberSignature Language="C#" Value="void ICollection&lt;A&gt;.Clear ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.Collections.Generic.ICollection&lt;A&gt;.Clear() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void System.Collections.Generic.ICollection&lt;A&gt;.Clear();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Clear</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Contains">
+ <MemberSignature Language="C#" Value="bool ICollection&lt;A&gt;.Contains (A item);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(!A item) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Contains(A item);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Contains(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly">
+ <MemberSignature Language="C#" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance bool System.Collections.Generic.ICollection&lt;A&gt;.IsReadOnly" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.ICollection`1.IsReadOnly</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.ICollection&lt;A&gt;.Remove">
+ <MemberSignature Language="C#" Value="bool ICollection&lt;A&gt;.Remove (A item);" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(!A item) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="bool System.Collections.Generic.ICollection&lt;A&gt;.Remove(A item);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.ICollection`1.Remove(`0)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="item" Type="A" />
+ </Parameters>
+ <Docs>
+ <param name="item">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.Generic.IEnumerator&lt;A&gt; IEnumerable&lt;A&gt;.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.Generic.IEnumerator`1&lt;!A&gt; System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.Generic.IEnumerable`1.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerator&lt;A&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.Generic.IEnumerator&lt;A&gt;.Current">
+ <MemberSignature Language="C#" Value="A System.Collections.Generic.IEnumerator&lt;A&gt;.Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance !A System.Collections.Generic.IEnumerator&lt;A&gt;.Current" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.Generic.IEnumerator`1.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>A</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerable.GetEnumerator">
+ <MemberSignature Language="C#" Value="System.Collections.IEnumerator IEnumerable.GetEnumerator ();" />
+ <MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance class System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() cil managed" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:System.Collections.IEnumerable.GetEnumerator</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.IEnumerator</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="System.Collections.IEnumerator.Current">
+ <MemberSignature Language="C#" Value="object System.Collections.IEnumerator.Current { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance object System.Collections.IEnumerator.Current" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:System.Collections.IEnumerator.Current</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Color.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Color.xml
new file mode 100644
index 00000000..75a454f5
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Color.xml
@@ -0,0 +1,82 @@
+<Type Name="Color" FullName="Mono.DocTest.Color">
+ <TypeSignature Language="C#" Value="public enum Color" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Color extends System.Enum" />
+ <TypeSignature Language="C++ WINRT" Value="enum Color" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="AnotherGreen">
+ <MemberSignature Language="C#" Value="AnotherGreen" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color AnotherGreen = int32(2)" />
+ <MemberSignature Language="C++ WINRT" Value="AnotherGreen" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Blue">
+ <MemberSignature Language="C#" Value="Blue" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Blue = int32(1)" />
+ <MemberSignature Language="C++ WINRT" Value="Blue" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>1</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Green">
+ <MemberSignature Language="C#" Value="Green" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Green = int32(2)" />
+ <MemberSignature Language="C++ WINRT" Value="Green" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Red">
+ <MemberSignature Language="C#" Value="Red" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Color Red = int32(0)" />
+ <MemberSignature Language="C++ WINRT" Value="Red" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <MemberValue>0</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/D.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/D.xml
new file mode 100644
index 00000000..fffe57fa
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/D.xml
@@ -0,0 +1,23 @@
+<Type Name="D" FullName="Mono.DocTest.D">
+ <TypeSignature Language="C#" Value="public delegate dynamic D(Func&lt;string,dynamic,object&gt; value);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed D extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.String,System.Object,System.Object&gt;" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml
new file mode 100644
index 00000000..279e67b0
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocAttribute.xml
@@ -0,0 +1,103 @@
+<Type Name="DocAttribute" FullName="Mono.DocTest.DocAttribute">
+ <TypeSignature Language="C#" Value="public class DocAttribute : Attribute" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit DocAttribute extends System.Attribute" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Attribute</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.AttributeUsage(System.AttributeTargets.All)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public DocAttribute (string docs);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string docs) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" DocAttribute(std::wstring const &amp; docs);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="docs" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="docs">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Field">
+ <MemberSignature Language="C#" Value="public bool Field;" />
+ <MemberSignature Language="ILAsm" Value=".field public bool Field" />
+ <MemberSignature Language="C++ WINRT" Value="bool Field;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="FlagsEnum">
+ <MemberSignature Language="C#" Value="public ConsoleModifiers FlagsEnum;" />
+ <MemberSignature Language="ILAsm" Value=".field public valuetype System.ConsoleModifiers FlagsEnum" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.ConsoleModifiers</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="NonFlagsEnum">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Color NonFlagsEnum;" />
+ <MemberSignature Language="ILAsm" Value=".field public valuetype Mono.DocTest.Color NonFlagsEnum" />
+ <MemberSignature Language="C++ WINRT" Value="Mono::DocTest::Color NonFlagsEnum;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Property">
+ <MemberSignature Language="C#" Value="public Type Property { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Type Property" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Type</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml
new file mode 100644
index 00000000..61df663c
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/DocValueType.xml
@@ -0,0 +1,59 @@
+<Type Name="DocValueType" FullName="Mono.DocTest.DocValueType">
+ <TypeSignature Language="C#" Value="public struct DocValueType : Mono.DocTest.IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed beforefieldinit DocValueType extends System.ValueType implements class Mono.DocTest.IProcess" />
+ <TypeSignature Language="C++ WINRT" Value="struct DocValueType : Mono::DocTest::IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.IProcess</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="total">
+ <MemberSignature Language="C#" Value="public int total;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 total" />
+ <MemberSignature Language="C++ WINRT" Value="int total;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/IProcess.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/IProcess.xml
new file mode 100644
index 00000000..7a013c31
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/IProcess.xml
@@ -0,0 +1,15 @@
+<Type Name="IProcess" FullName="Mono.DocTest.IProcess">
+ <TypeSignature Language="C#" Value="public interface IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public interface auto ansi abstract IProcess" />
+ <TypeSignature Language="C++ WINRT" Value="__interface IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml
new file mode 100644
index 00000000..b19b1ea8
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/UseLists.xml
@@ -0,0 +1,171 @@
+<Type Name="UseLists" FullName="Mono.DocTest.UseLists">
+ <TypeSignature Language="C#" Value="public class UseLists" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit UseLists extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class UseLists" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public UseLists ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" UseLists();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetValues&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Generic.MyList&lt;T&gt; GetValues&lt;T&gt; (T value) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class Mono.DocTest.Generic.MyList`1&lt;!!T&gt; GetValues&lt;struct .ctor (class System.ValueType) T&gt;(!!T value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Generic.MyList&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="value" Type="T" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (Mono.DocTest.Generic.MyList&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class Mono.DocTest.Generic.MyList`1&lt;int32&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="Mono.DocTest.Generic.MyList&lt;System.Int32&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1&lt;int32&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Int32&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process">
+ <MemberSignature Language="C#" Value="public void Process (System.Collections.Generic.List&lt;Predicate&lt;int&gt;&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process(class System.Collections.Generic.List`1&lt;class System.Predicate`1&lt;int32&gt;&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Predicate&lt;System.Int32&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Process&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public void Process&lt;T&gt; (System.Collections.Generic.List&lt;Predicate&lt;T&gt;&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Process&lt;T&gt;(class System.Collections.Generic.List`1&lt;class System.Predicate`1&lt;!!T&gt;&gt; list) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.List&lt;System.Predicate&lt;T&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="UseHelper&lt;T,U,V&gt;">
+ <MemberSignature Language="C#" Value="public void UseHelper&lt;T,U,V&gt; (Mono.DocTest.Generic.MyList&lt;T&gt;.Helper&lt;U,V&gt; helper);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void UseHelper&lt;T, U, V&gt;(class Mono.DocTest.Generic.MyList`1/Helper`2&lt;!!T, !!U, !!V&gt; helper) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename T, typename U, typename V&gt;&#xA; void UseHelper(Mono::DocTest::Generic::MyList&lt;T&gt;::Helper&lt;U, V&gt; const &amp; helper);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ <TypeParameter Name="U" />
+ <TypeParameter Name="V" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="helper" Type="Mono.DocTest.Generic.MyList&lt;T&gt;+Helper&lt;U,V&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <typeparam name="U">To be added.</typeparam>
+ <typeparam name="V">To be added.</typeparam>
+ <param name="helper">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Del.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Del.xml
new file mode 100644
index 00000000..e3ad767a
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Del.xml
@@ -0,0 +1,22 @@
+<Type Name="Widget+Del" FullName="Mono.DocTest.Widget+Del">
+ <TypeSignature Language="C#" Value="public delegate void Widget.Del(int i);" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Widget/Del extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Direction.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Direction.xml
new file mode 100644
index 00000000..f3339666
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+Direction.xml
@@ -0,0 +1,87 @@
+<Type Name="Widget+Direction" FullName="Mono.DocTest.Widget+Direction">
+ <TypeSignature Language="C#" Value="protected internal enum Widget.Direction" />
+ <TypeSignature Language="ILAsm" Value=".class nested protected auto ansi sealed Widget/Direction extends System.Enum" />
+ <TypeSignature Language="C++ WINRT" Value="enum Widget::Direction" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Flags</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="East">
+ <MemberSignature Language="C#" Value="East" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction East = int32(2)" />
+ <MemberSignature Language="C++ WINRT" Value="East" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>2</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="North">
+ <MemberSignature Language="C#" Value="North" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction North = int32(0)" />
+ <MemberSignature Language="C++ WINRT" Value="North" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>0</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="South">
+ <MemberSignature Language="C#" Value="South" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction South = int32(1)" />
+ <MemberSignature Language="C++ WINRT" Value="South" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>1</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="West">
+ <MemberSignature Language="C#" Value="West" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype Mono.DocTest.Widget/Direction West = int32(3)" />
+ <MemberSignature Language="C++ WINRT" Value="West" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Direction</ReturnType>
+ </ReturnValue>
+ <MemberValue>3</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+IMenuItem.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+IMenuItem.xml
new file mode 100644
index 00000000..80f81a36
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+IMenuItem.xml
@@ -0,0 +1,49 @@
+<Type Name="Widget+IMenuItem" FullName="Mono.DocTest.Widget+IMenuItem">
+ <TypeSignature Language="C#" Value="public interface Widget.IMenuItem" />
+ <TypeSignature Language="ILAsm" Value=".class nested public interface auto ansi abstract Widget/IMenuItem" />
+ <TypeSignature Language="C++ WINRT" Value="__interface Widget::IMenuItem" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="A">
+ <MemberSignature Language="C#" Value="public void A ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void A() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void A();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="B">
+ <MemberSignature Language="C#" Value="public int B { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 B" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
new file mode 100644
index 00000000..d28fdc25
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.xml
@@ -0,0 +1,33 @@
+<Type Name="Widget+NestedClass+Double+Triple+Quadruple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple.Quadruple" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple/Quadruple extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class Widget::NestedClass::Double::Triple::Quadruple" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Quadruple ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Quadruple();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
new file mode 100644
index 00000000..ff81a398
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double+Triple.xml
@@ -0,0 +1,33 @@
+<Type Name="Widget+NestedClass+Double+Triple" FullName="Mono.DocTest.Widget+NestedClass+Double+Triple">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double.Triple" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double/Triple extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class Widget::NestedClass::Double::Triple" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Triple ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Triple();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double.xml
new file mode 100644
index 00000000..4e1bae80
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass+Double.xml
@@ -0,0 +1,33 @@
+<Type Name="Widget+NestedClass+Double" FullName="Mono.DocTest.Widget+NestedClass+Double">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass.Double" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass/Double extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class Widget::NestedClass::Double" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Double ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Double();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml
new file mode 100644
index 00000000..80136bf9
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass.xml
@@ -0,0 +1,68 @@
+<Type Name="Widget+NestedClass" FullName="Mono.DocTest.Widget+NestedClass">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NestedClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" NestedClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="value">
+ <MemberSignature Language="C#" Value="public int value;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 value" />
+ <MemberSignature Language="C++ WINRT" Value="int value;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml
new file mode 100644
index 00000000..51c7907a
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget+NestedClass`1.xml
@@ -0,0 +1,72 @@
+<Type Name="Widget+NestedClass&lt;T&gt;" FullName="Mono.DocTest.Widget+NestedClass&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public class Widget.NestedClass&lt;T&gt;" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi beforefieldinit Widget/NestedClass`1&lt;T&gt; extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NestedClass ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" NestedClass();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M">
+ <MemberSignature Language="C#" Value="public void M (int i);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M(int32 i) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M(int i);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="value">
+ <MemberSignature Language="C#" Value="public int value;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32 value" />
+ <MemberSignature Language="C++ WINRT" Value="int value;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml
new file mode 100644
index 00000000..70ce513c
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/Mono.DocTest/Widget.xml
@@ -0,0 +1,887 @@
+<Type Name="Widget" FullName="Mono.DocTest.Widget">
+ <TypeSignature Language="C#" Value="public class Widget : Mono.DocTest.IProcess" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Widget extends System.Object implements class Mono.DocTest.IProcess" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class Widget : Mono::DocTest::IProcess" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Mono.DocTest.IProcess</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Widget ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Widget();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Widget (Converter&lt;string,string&gt; c);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Converter`2&lt;string, string&gt; c) cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="c" Type="System.Converter&lt;System.String,System.String&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="c">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Widget (string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(string s) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Widget(std::wstring const &amp; s);" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="AnEvent">
+ <MemberSignature Language="C#" Value="public event Mono.DocTest.Widget.Del AnEvent;" />
+ <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnEvent" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Del event")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>add: Mono.DocTest.Doc("Del add accessor")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>remove: Mono.DocTest.Doc("Del remove accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Del</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="AnotherEvent">
+ <MemberSignature Language="C#" Value="protected event Mono.DocTest.Widget.Del AnotherEvent;" />
+ <MemberSignature Language="ILAsm" Value=".event class Mono.DocTest.Widget/Del AnotherEvent" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget+Del</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="array1">
+ <MemberSignature Language="C#" Value="public long[] array1;" />
+ <MemberSignature Language="ILAsm" Value=".field public int64[] array1" />
+ <MemberSignature Language="C++ WINRT" Value="std::Array &lt;long&gt; array1;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int64[]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="array2">
+ <MemberSignature Language="C#" Value="public Mono.DocTest.Widget[,] array2;" />
+ <MemberSignature Language="ILAsm" Value=".field public class Mono.DocTest.Widget[,] array2" />
+ <MemberSignature Language="C++ WINRT" Value="std::Array &lt;Mono::DocTest::Widget const &amp;, 2&gt; array2;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget[,]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="classCtorError">
+ <MemberSignature Language="C#" Value="public static readonly string[] classCtorError;" />
+ <MemberSignature Language="ILAsm" Value=".field public static initonly string[] classCtorError" />
+ <MemberSignature Language="C++ WINRT" Value="static initonly std::Array &lt;std::wstring const &amp;&gt; classCtorError;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String[]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Default">
+ <MemberSignature Language="C#" Value="public void Default (int a = 1, int b = 2);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Default(int32 a, int32 b) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Default(int a = 1, int b = 2);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.Int32" />
+ <Parameter Name="b" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Default">
+ <MemberSignature Language="C#" Value="public void Default (string a = &quot;a&quot;, char b = 'b');" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void Default(string a, char b) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Default(std::wstring const &amp; a = &quot;a&quot;, char b = 'b');" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.String" />
+ <Parameter Name="b" Type="System.Char" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="defaultColor">
+ <MemberSignature Language="C#" Value="protected static Mono.DocTest.Color defaultColor;" />
+ <MemberSignature Language="ILAsm" Value=".field family static valuetype Mono.DocTest.Color defaultColor" />
+ <MemberSignature Language="C++ WINRT" Value="static Mono::DocTest::Color defaultColor;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Color</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic0">
+ <MemberSignature Language="C#" Value="public dynamic Dynamic0 (dynamic a, dynamic b);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance object Dynamic0(object a, object b) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IInspectable Dynamic0(winrt::Windows::Foundation::IInspectable const &amp; a, winrt::Windows::Foundation::IInspectable const &amp; b);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Object</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="System.Object" />
+ <Parameter Name="b" Type="System.Object" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <param name="b">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic1">
+ <MemberSignature Language="C#" Value="public System.Collections.Generic.Dictionary&lt;dynamic,string&gt; Dynamic1 (System.Collections.Generic.Dictionary&lt;dynamic,string&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.Dictionary`2&lt;object, string&gt; Dynamic1(class System.Collections.Generic.Dictionary`2&lt;object, string&gt; value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.Dictionary&lt;System.Object,System.String&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Collections.Generic.Dictionary&lt;System.Object,System.String&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic2">
+ <MemberSignature Language="C#" Value="public Func&lt;string,dynamic&gt; Dynamic2 (Func&lt;string,dynamic&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Func`2&lt;string, object&gt; Dynamic2(class System.Func`2&lt;string, object&gt; value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.String,System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.String,System.Object&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Dynamic3">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic&gt;,Func&lt;dynamic,string&gt;&gt; Dynamic3 (Func&lt;Func&lt;string,dynamic&gt;,Func&lt;dynamic,string&gt;&gt; value);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Func`2&lt;class System.Func`2&lt;string, object&gt;, class System.Func`2&lt;object, string&gt;&gt; Dynamic3(class System.Func`2&lt;class System.Func`2&lt;string, object&gt;, class System.Func`2&lt;object, string&gt;&gt; value) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object&gt;,System.Func&lt;System.Object,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="value" Type="System.Func&lt;System.Func&lt;System.String,System.Object&gt;,System.Func&lt;System.Object,System.String&gt;&gt;" />
+ </Parameters>
+ <Docs>
+ <param name="value">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicE1">
+ <MemberSignature Language="C#" Value="public event Func&lt;dynamic&gt; DynamicE1;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.Func`1&lt;object&gt; DynamicE1" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Obsolete("why not")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicE2">
+ <MemberSignature Language="C#" Value="public event Func&lt;dynamic&gt; DynamicE2;" />
+ <MemberSignature Language="ILAsm" Value=".event class System.Func`1&lt;object&gt; DynamicE2" />
+ <MemberType>Event</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Object&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicF">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic,string&gt;,Func&lt;dynamic,Func&lt;dynamic&gt;,string&gt;&gt; DynamicF;" />
+ <MemberSignature Language="ILAsm" Value=".field public class System.Func`2&lt;class System.Func`3&lt;string, object, string&gt;, class System.Func`3&lt;object, class System.Func`1&lt;object&gt;, string&gt;&gt; DynamicF" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object,System.String&gt;,System.Func&lt;System.Object,System.Func&lt;System.Object&gt;,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="DynamicP">
+ <MemberSignature Language="C#" Value="public Func&lt;Func&lt;string,dynamic,string&gt;,Func&lt;dynamic,Func&lt;dynamic&gt;,string&gt;&gt; DynamicP { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Func`2&lt;class System.Func`3&lt;string, object, string&gt;, class System.Func`3&lt;object, class System.Func`1&lt;object&gt;, string&gt;&gt; DynamicP" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Func&lt;System.Func&lt;System.String,System.Object,System.String&gt;,System.Func&lt;System.Object,System.Func&lt;System.Object&gt;,System.String&gt;&gt;</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Height">
+ <MemberSignature Language="C#" Value="protected long Height { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int64 Height" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Height property")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int64</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Item">
+ <MemberSignature Language="C#" Value="public int this[int i] { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Item(int32)" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Item property")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>set: Mono.DocTest.Doc("Item property set accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Item">
+ <MemberSignature Language="C#" Value="public int this[string s, int i] { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Item(string, int32)" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="s" Type="System.String" />
+ <Parameter Name="i" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="s">To be added.</param>
+ <param name="i">To be added.</param>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M0">
+ <MemberSignature Language="C#" Value="public static void M0 ();" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void M0() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" static void M0();" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M1">
+ <MemberSignature Language="C#" Value="public void M1 (char c, out float f, ref Mono.DocTest.DocValueType v);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M1(char c, [out] float32&amp; f, valuetype Mono.DocTest.DocValueType&amp; v) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M1(char c, [Runtime::InteropServices::Out] float &amp; f, Mono::DocTest::DocValueType &amp; v);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("normal DocAttribute", Field=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("return:DocAttribute", Property=typeof(Mono.DocTest.Widget))</AttributeName>
+ </Attribute>
+ </Attributes>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="c" Type="System.Char">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("c", FlagsEnum=System.ConsoleModifiers.Alt | System.ConsoleModifiers.Control)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ <Parameter Name="f" Type="System.Single&amp;" RefType="out">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("f", NonFlagsEnum=Mono.DocTest.Color.Red)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ <Parameter Name="v" Type="Mono.DocTest.DocValueType&amp;" RefType="ref">
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("v")</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <Docs>
+ <param name="c">To be added.</param>
+ <param name="f">To be added.</param>
+ <param name="v">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M2">
+ <MemberSignature Language="C#" Value="public void M2 (short[] x1, int[,] x2, long[][] x3);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M2(int16[] x1, int32[,] x2, int64[][] x3) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M2(std::Array &lt;short&gt; const &amp; x1, std::Array &lt;int, 2&gt; const &amp; x2, std::Array &lt;std::Array &lt;long&gt; const &amp;&gt; const &amp; x3);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x1" Type="System.Int16[]" />
+ <Parameter Name="x2" Type="System.Int32[,]" />
+ <Parameter Name="x3" Type="System.Int64[][]" />
+ </Parameters>
+ <Docs>
+ <param name="x1">To be added.</param>
+ <param name="x2">To be added.</param>
+ <param name="x3">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M3">
+ <MemberSignature Language="C#" Value="protected void M3 (long[][] x3, Mono.DocTest.Widget[,,][] x4);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M3(int64[][] x3, class Mono.DocTest.Widget[,,][] x4) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M3(std::Array &lt;std::Array &lt;long&gt; const &amp;&gt; const &amp; x3, std::Array &lt;std::Array &lt;Mono::DocTest::Widget const &amp;, 3&gt; const &amp;&gt; const &amp; x4);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x3" Type="System.Int64[][]" />
+ <Parameter Name="x4" Type="Mono.DocTest.Widget[,,][]" />
+ </Parameters>
+ <Docs>
+ <param name="x3">To be added.</param>
+ <param name="x4">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M4">
+ <MemberSignature Language="C#" Value="protected void M4 (char* pc, Mono.DocTest.Color** ppf);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M4(char* pc, valuetype Mono.DocTest.Color** ppf) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M4(char* pc, Mono::DocTest::Color** ppf);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="pc" Type="System.Char*" />
+ <Parameter Name="ppf" Type="Mono.DocTest.Color**" />
+ </Parameters>
+ <Docs>
+ <param name="pc">To be added.</param>
+ <param name="ppf">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M5">
+ <MemberSignature Language="C#" Value="protected void M5 (void* pv, double*[,][] pd);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M5(void* pv, float64*[,][] pd) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M5(void* pv, std::Array &lt;std::Array &lt;double*, 2&gt; const &amp;&gt; const &amp; pd);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="pv" Type="System.Void*" />
+ <Parameter Name="pd" Type="System.Double*[,][]" />
+ </Parameters>
+ <Docs>
+ <param name="pv">To be added.</param>
+ <param name="pd">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M6">
+ <MemberSignature Language="C#" Value="protected void M6 (int i, params object[] args);" />
+ <MemberSignature Language="ILAsm" Value=".method familyhidebysig instance void M6(int32 i, object[] args) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="i" Type="System.Int32" />
+ <Parameter Name="args" Type="System.Object[]">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.ParamArray</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Parameter>
+ </Parameters>
+ <Docs>
+ <param name="i">To be added.</param>
+ <param name="args">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="M7">
+ <MemberSignature Language="C#" Value="public void M7 (Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple a);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig instance void M7(class Mono.DocTest.Widget/NestedClass/Double/Triple/Quadruple a) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="void M7(Mono::DocTest::Widget::NestedClass::Double::Triple::Quadruple const &amp; a);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="a" Type="Mono.DocTest.Widget+NestedClass+Double+Triple+Quadruple" />
+ </Parameters>
+ <Docs>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="message">
+ <MemberSignature Language="C#" Value="public string message;" />
+ <MemberSignature Language="ILAsm" Value=".field public string message" />
+ <MemberSignature Language="C++ WINRT" Value="std::wstring message;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="monthlyAverage">
+ <MemberSignature Language="C#" Value="protected internal readonly double monthlyAverage;" />
+ <MemberSignature Language="ILAsm" Value=".field familyorassembly initonly float64 monthlyAverage" />
+ <MemberSignature Language="C++ WINRT" Value="initonly double monthlyAverage;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Addition">
+ <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget operator + (Mono.DocTest.Widget x1, Mono.DocTest.Widget x2);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_Addition(class Mono.DocTest.Widget x1, class Mono.DocTest.Widget x2) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const &amp; x1, Mono::DocTest::Widget const &amp; x2);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x1" Type="Mono.DocTest.Widget" />
+ <Parameter Name="x2" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x1">To be added.</param>
+ <param name="x2">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Division">
+ <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget op_Division;" />
+ <MemberSignature Language="ILAsm" Value=".field public static class Mono.DocTest.Widget op_Division" />
+ <MemberSignature Language="C++ WINRT" Value="static Mono::DocTest::Widget op_Division;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Explicit">
+ <MemberSignature Language="C#" Value="public static explicit operator int (Mono.DocTest.Widget x);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" static explicit operator int(Mono::DocTest::Widget const &amp; x);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_Implicit">
+ <MemberSignature Language="C#" Value="public static implicit operator long (Mono.DocTest.Widget x);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int64 op_Implicit(class Mono.DocTest.Widget x) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" static operator long(Mono::DocTest::Widget const &amp; x);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int64</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="op_UnaryPlus">
+ <MemberSignature Language="C#" Value="public static Mono.DocTest.Widget operator + (Mono.DocTest.Widget x);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname class Mono.DocTest.Widget op_UnaryPlus(class Mono.DocTest.Widget x) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" static Mono::DocTest::Widget operator +(Mono::DocTest::Widget const &amp; x);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Mono.DocTest.Widget</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="x" Type="Mono.DocTest.Widget" />
+ </Parameters>
+ <Docs>
+ <param name="x">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="pCount">
+ <MemberSignature Language="C#" Value="public int* pCount;" />
+ <MemberSignature Language="ILAsm" Value=".field public int32* pCount" />
+ <MemberSignature Language="C++ WINRT" Value="int* pCount;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int32*</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="PI">
+ <MemberSignature Language="C#" Value="protected internal const double PI = 3.14159;" />
+ <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3.14159)" />
+ <MemberSignature Language="C++ WINRT" Value="double PI = 3.14159;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <MemberValue>3.14159</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ppValues">
+ <MemberSignature Language="C#" Value="public float** ppValues;" />
+ <MemberSignature Language="ILAsm" Value=".field public float32** ppValues" />
+ <MemberSignature Language="C++ WINRT" Value="float** ppValues;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Single**</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Width">
+ <MemberSignature Language="C#" Value="public int Width { get; protected set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int32 Width" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Mono.DocTest.Doc("Width property")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>get: Mono.DocTest.Doc("Width get accessor")</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>set: Mono.DocTest.Doc("Width set accessor")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <ReturnValue>
+ <ReturnType>System.Int32</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="X">
+ <MemberSignature Language="C#" Value="protected internal short X { set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int16 X" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int16</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Y">
+ <MemberSignature Language="C#" Value="protected internal double Y { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance float64 Y" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/NoNamespace.xml b/mdoc/Test/en.expected-cppwinrt2/NoNamespace.xml
new file mode 100644
index 00000000..0fb65919
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/NoNamespace.xml
@@ -0,0 +1,33 @@
+<Type Name="NoNamespace" FullName="NoNamespace">
+ <TypeSignature Language="C#" Value="public class NoNamespace" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit NoNamespace extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="[Windows::Foundation::Metadata::WebHostHidden]&#xA;class NoNamespace" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public NoNamespace ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" NoNamespace();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/System/Action`1.xml b/mdoc/Test/en.expected-cppwinrt2/System/Action`1.xml
new file mode 100644
index 00000000..7560590f
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/System/Action`1.xml
@@ -0,0 +1,26 @@
+<Type Name="Action&lt;T&gt;" FullName="System.Action&lt;T&gt;">
+ <TypeSignature Language="C#" Value="public delegate void Action&lt;T&gt;(T obj);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Action`1&lt;T&gt; extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="obj" Type="T" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="obj">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/System/Array.xml b/mdoc/Test/en.expected-cppwinrt2/System/Array.xml
new file mode 100644
index 00000000..587c67c9
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/System/Array.xml
@@ -0,0 +1,110 @@
+<Type Name="Array" FullName="System.Array">
+ <TypeSignature Language="C#" Value="public class Array" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit Array extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Array ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Array();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="AsReadOnly&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.ObjectModel.ReadOnlyCollection&lt;T&gt; AsReadOnly&lt;T&gt; (T[] array);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.ObjectModel.ReadOnlyCollection`1&lt;!!T&gt; AsReadOnly&lt;T&gt;(!!T[] array) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Collections.ObjectModel.ReadOnlyCollection&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="T[]" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
+ <MemberSignature Language="C#" Value="public static TOutput[] ConvertAll&lt;TInput,TOutput&gt; (TInput[] array, Converter&lt;TInput,TOutput&gt; converter);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig !!TOutput[] ConvertAll&lt;TInput, TOutput&gt;(!!TInput[] array, class System.Converter`2&lt;!!TInput, !!TOutput&gt; converter) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>TOutput[]</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="TInput" />
+ <TypeParameter Name="TOutput" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="TInput[]" />
+ <Parameter Name="converter" Type="System.Converter&lt;TInput,TOutput&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="TInput">To be added.</typeparam>
+ <typeparam name="TOutput">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <param name="converter">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Resize&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Resize&lt;T&gt; (ref T[] array, int newSize);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Resize&lt;T&gt;(!!T[]&amp; array, int32 newSize) cil managed" />
+ <MemberSignature Language="C++ WINRT" Value="template &lt;typename T&gt;&#xA; static void Resize(std::Array &lt;T&gt; const &amp; &amp; array, int newSize);" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="array" Type="T[]&amp;" RefType="ref" />
+ <Parameter Name="newSize" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="array">To be added.</param>
+ <param name="newSize">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/System/AsyncCallback.xml b/mdoc/Test/en.expected-cppwinrt2/System/AsyncCallback.xml
new file mode 100644
index 00000000..deb06e91
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/System/AsyncCallback.xml
@@ -0,0 +1,22 @@
+<Type Name="AsyncCallback" FullName="System.AsyncCallback">
+ <TypeSignature Language="C#" Value="public delegate void AsyncCallback(IAsyncResult ar);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed AsyncCallback extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Parameters>
+ <Parameter Name="ar" Type="System.IAsyncResult" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="ar">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/System/Environment+SpecialFolder.xml b/mdoc/Test/en.expected-cppwinrt2/System/Environment+SpecialFolder.xml
new file mode 100644
index 00000000..6e6a9408
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/System/Environment+SpecialFolder.xml
@@ -0,0 +1,16 @@
+<Type Name="Environment+SpecialFolder" FullName="System.Environment+SpecialFolder">
+ <TypeSignature Language="C#" Value="public enum Environment.SpecialFolder" />
+ <TypeSignature Language="ILAsm" Value=".class nested public auto ansi sealed Environment/SpecialFolder extends System.Enum" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/System/Environment.xml b/mdoc/Test/en.expected-cppwinrt2/System/Environment.xml
new file mode 100644
index 00000000..a3508bbf
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/System/Environment.xml
@@ -0,0 +1,70 @@
+<Type Name="Environment" FullName="System.Environment">
+ <TypeSignature Language="C#" Value="public static class Environment" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi abstract sealed beforefieldinit Environment extends System.Object" />
+ <AssemblyInfo>
+ <AssemblyName>DocTest</AssemblyName>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="GetFolderPath">
+ <MemberSignature Language="C#" Value="public static string GetFolderPath (Environment.SpecialFolder folder);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig string GetFolderPath(valuetype System.Environment/SpecialFolder folder) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="folder" Type="System.Environment+SpecialFolder" />
+ </Parameters>
+ <Docs>
+ <param name="folder">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="IsAligned&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static bool IsAligned&lt;T&gt; (this T[] vect, int index) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsAligned&lt;struct .ctor (class System.ValueType) T&gt;(!!T[] vect, int32 index) cil managed" />
+ <MemberType>Method</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>0.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="vect" Type="T[]" RefType="this" />
+ <Parameter Name="index" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="vect">To be added.</param>
+ <param name="index">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/en.expected-cppwinrt2/index.xml b/mdoc/Test/en.expected-cppwinrt2/index.xml
new file mode 100644
index 00000000..8deff9a6
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/index.xml
@@ -0,0 +1,222 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="DocTest" Version="0.0.0.0">
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.Diagnostics.Debuggable(System.Diagnostics.DebuggableAttribute+DebuggingModes.IgnoreSymbolStoreSequencePoints)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>System.Runtime.CompilerServices.RuntimeCompatibility(WrapNonExceptionThrows=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ </Assembly>
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="">
+ <Type Name="NoNamespace" Kind="Class" />
+ </Namespace>
+ <Namespace Name="Mono.DocTest">
+ <Type Name="Color" Kind="Enumeration" />
+ <Type Name="D" Kind="Delegate" />
+ <Type Name="DocAttribute" Kind="Class" />
+ <Type Name="DocValueType" Kind="Structure" />
+ <Type Name="IProcess" Kind="Interface" />
+ <Type Name="UseLists" Kind="Class" />
+ <Type Name="Widget" Kind="Class" />
+ <Type Name="Widget+Del" Kind="Delegate" />
+ <Type Name="Widget+Direction" Kind="Enumeration" />
+ <Type Name="Widget+IMenuItem" Kind="Interface" />
+ <Type Name="Widget+NestedClass" Kind="Class" />
+ <Type Name="Widget+NestedClass`1" DisplayName="Widget+NestedClass&lt;T&gt;" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double+Triple" Kind="Class" />
+ <Type Name="Widget+NestedClass+Double+Triple+Quadruple" Kind="Class" />
+ </Namespace>
+ <Namespace Name="Mono.DocTest.Generic">
+ <Type Name="Extensions" Kind="Class" />
+ <Type Name="Func`2" DisplayName="Func&lt;TArg,TRet&gt;" Kind="Delegate" />
+ <Type Name="GenericBase`1" DisplayName="GenericBase&lt;U&gt;" Kind="Class" />
+ <Type Name="GenericBase`1+FooEventArgs" DisplayName="GenericBase&lt;U&gt;+FooEventArgs" Kind="Class" />
+ <Type Name="GenericBase`1+NestedCollection" DisplayName="GenericBase&lt;U&gt;+NestedCollection" Kind="Class" />
+ <Type Name="GenericBase`1+NestedCollection+Enumerator" DisplayName="GenericBase&lt;U&gt;+NestedCollection+Enumerator" Kind="Structure" />
+ <Type Name="IFoo`1" DisplayName="IFoo&lt;T&gt;" Kind="Interface" />
+ <Type Name="MyList`1" DisplayName="MyList&lt;T&gt;" Kind="Class" />
+ <Type Name="MyList`1+Helper`2" DisplayName="MyList&lt;T&gt;+Helper&lt;U,V&gt;" Kind="Class" />
+ <Type Name="MyList`2" DisplayName="MyList&lt;A,B&gt;" Kind="Class" />
+ </Namespace>
+ <Namespace Name="System">
+ <Type Name="Action`1" DisplayName="Action&lt;T&gt;" Kind="Delegate" />
+ <Type Name="Array" Kind="Class" />
+ <Type Name="AsyncCallback" Kind="Delegate" />
+ <Type Name="Environment" Kind="Class" />
+ <Type Name="Environment+SpecialFolder" Kind="Enumeration" />
+ </Namespace>
+ </Types>
+ <Title>DocTest</Title>
+ <ExtensionMethods>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:Mono.DocTest.Generic.IFoo`1" />
+ </Targets>
+ <Member MemberName="Bar&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void Bar&lt;T&gt; (this Mono.DocTest.Generic.IFoo&lt;T&gt; self, string s);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void Bar&lt;T&gt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt; self, string s) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="Mono.DocTest.Generic.IFoo&lt;T&gt;" RefType="this" />
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.Bar``1(Mono.DocTest.Generic.IFoo{``0},System.String)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Collections.Generic.IEnumerable`1" />
+ </Targets>
+ <Member MemberName="ForEach&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static void ForEach&lt;T&gt; (this System.Collections.Generic.IEnumerable&lt;T&gt; self, Action&lt;T&gt; a);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig void ForEach&lt;T&gt;(class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; self, class System.Action`1&lt;!!T&gt; a) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="System.Collections.Generic.IEnumerable&lt;T&gt;" RefType="this" />
+ <Parameter Name="a" Type="System.Action&lt;T&gt;" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <param name="a">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ForEach``1(System.Collections.Generic.IEnumerable{``0},System.Action{``0})" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Collections.Generic.IEnumerable`1" />
+ </Targets>
+ <Member MemberName="ToDouble">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;double&gt; ToDouble (this System.Collections.Generic.IEnumerable&lt;int&gt; list);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;float64&gt; ToDouble(class System.Collections.Generic.IEnumerable`1&lt;int32&gt; list) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="list" Type="System.Collections.Generic.IEnumerable&lt;System.Int32&gt;" RefType="this" />
+ </Parameters>
+ <Docs>
+ <param name="list">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToDouble(System.Collections.Generic.IEnumerable{System.Int32})" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:Mono.DocTest.Generic.IFoo`1" />
+ </Targets>
+ <Member MemberName="ToDouble&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static double ToDouble&lt;T&gt; (this T val) where T : Mono.DocTest.Generic.IFoo&lt;T&gt;;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig float64 ToDouble&lt;(class Mono.DocTest.Generic.IFoo`1&lt;!!T&gt;) T&gt;(!!T val) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Double</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <InterfaceName>Mono.DocTest.Generic.IFoo&lt;T&gt;</InterfaceName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="val" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="val">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToDouble``1(``0)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="System.Object" />
+ </Targets>
+ <Member MemberName="ToEnumerable&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static System.Collections.Generic.IEnumerable&lt;T&gt; ToEnumerable&lt;T&gt; (this T self);" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig class System.Collections.Generic.IEnumerable`1&lt;!!T&gt; ToEnumerable&lt;T&gt;(!!T self) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Collections.Generic.IEnumerable&lt;T&gt;</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T" />
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="self" Type="T" RefType="this" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="self">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="Mono.DocTest.Generic.Extensions" Member="M:Mono.DocTest.Generic.Extensions.ToEnumerable``1(``0)" />
+ </Member>
+ </ExtensionMethod>
+ <ExtensionMethod>
+ <Targets>
+ <Target Type="T:System.Array" />
+ </Targets>
+ <Member MemberName="IsAligned&lt;T&gt;">
+ <MemberSignature Language="C#" Value="public static bool IsAligned&lt;T&gt; (this T[] vect, int index) where T : struct;" />
+ <MemberSignature Language="ILAsm" Value=".method public static hidebysig bool IsAligned&lt;struct .ctor (class System.ValueType) T&gt;(!!T[] vect, int32 index) cil managed" />
+ <MemberType>ExtensionMethod</MemberType>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <TypeParameters>
+ <TypeParameter Name="T">
+ <Constraints>
+ <ParameterAttribute>DefaultConstructorConstraint</ParameterAttribute>
+ <ParameterAttribute>NotNullableValueTypeConstraint</ParameterAttribute>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Constraints>
+ </TypeParameter>
+ </TypeParameters>
+ <Parameters>
+ <Parameter Name="vect" Type="T[]" RefType="this" />
+ <Parameter Name="index" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <typeparam name="T">To be added.</typeparam>
+ <param name="vect">To be added.</param>
+ <param name="index">To be added.</param>
+ <summary>To be added.</summary>
+ </Docs>
+ <Link Type="System.Environment" Member="M:System.Environment.IsAligned``1(``0[],System.Int32)" />
+ </Member>
+ </ExtensionMethod>
+ </ExtensionMethods>
+</Overview>
diff --git a/mdoc/Test/en.expected-cppwinrt2/ns-.xml b/mdoc/Test/en.expected-cppwinrt2/ns-.xml
new file mode 100644
index 00000000..36dfeb30
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/ns-.xml
@@ -0,0 +1,6 @@
+<Namespace Name="">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.Generic.xml b/mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.Generic.xml
new file mode 100644
index 00000000..0d3e7924
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.Generic.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Mono.DocTest.Generic">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.xml b/mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.xml
new file mode 100644
index 00000000..96ab3e78
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/ns-Mono.DocTest.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Mono.DocTest">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/en.expected-cppwinrt2/ns-System.xml b/mdoc/Test/en.expected-cppwinrt2/ns-System.xml
new file mode 100644
index 00000000..c9692742
--- /dev/null
+++ b/mdoc/Test/en.expected-cppwinrt2/ns-System.xml
@@ -0,0 +1,6 @@
+<Namespace Name="System">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class2.xml b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class2.xml
new file mode 100644
index 00000000..8980b6b6
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class2.xml
@@ -0,0 +1,35 @@
+<Type Name="Class2" FullName="Namespace2.Class2">
+ <TypeSignature Language="C#" Value="public class Class2 : Windows.UI.Xaml.Application" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi Class2 extends Windows.UI.Xaml.Application" />
+ <TypeSignature Language="C++ WINRT" Value="class Class2 : winrt::Windows::UI::Xaml::Application" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>Windows.UI.Xaml.Application</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Composable(typeof(Namespace2.__IClass2ProtectedFactory), Windows.Foundation.Metadata.CompositionType.Protected, 1)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.WebHostHidden</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members />
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml
new file mode 100644
index 00000000..b8d1519f
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class3.xml
@@ -0,0 +1,71 @@
+<Type Name="Class3" FullName="Namespace2.Class3">
+ <TypeSignature Language="C#" Value="public sealed class Class3 : Windows.UI.Xaml.Application" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Class3 extends Windows.UI.Xaml.Application" />
+ <TypeSignature Language="C++ WINRT" Value="class Class3 sealed : winrt::Windows::UI::Xaml::Application" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>Windows.UI.Xaml.Application</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.WebHostHidden</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="ArrayOfTypeProperty">
+ <MemberSignature Language="C#" Value="public Type[] ArrayOfTypeProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Type[] ArrayOfTypeProperty" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:Namespace2.__IClass3PublicNonVirtuals.ArrayOfTypeProperty</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Type[]</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="LongProperty">
+ <MemberSignature Language="C#" Value="public long LongProperty { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance int64 LongProperty" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:Namespace2.__IClass3PublicNonVirtuals.LongProperty</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Int64</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class4.xml b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class4.xml
new file mode 100644
index 00000000..9a0ddfe2
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace2/Class4.xml
@@ -0,0 +1,40 @@
+<Type Name="Class4" FullName="Namespace2.Class4">
+ <TypeSignature Language="C#" Value="public struct Class4" />
+ <TypeSignature Language="ILAsm" Value=".class public sequential ansi sealed Class4 extends System.ValueType" />
+ <TypeSignature Language="C++ WINRT" Value="struct Class4" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.ValueType</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="StringField">
+ <MemberSignature Language="C#" Value="public string StringField;" />
+ <MemberSignature Language="ILAsm" Value=".field public string StringField" />
+ <MemberSignature Language="C++ WINRT" Value="std::wstring StringField;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.String</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml
new file mode 100644
index 00000000..10c2206e
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/Namespace222/App.xml
@@ -0,0 +1,226 @@
+<Type Name="App" FullName="Namespace222.App">
+ <TypeSignature Language="C#" Value="public sealed class App : Windows.ApplicationModel.Core.IFrameworkView" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed App extends System.Object implements class Windows.ApplicationModel.Core.IFrameworkView" />
+ <TypeSignature Language="C++ WINRT" Value="class App sealed : winrt::Windows::ApplicationModel::Core::IFrameworkView" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces>
+ <Interface>
+ <InterfaceName>Windows.ApplicationModel.Core.IFrameworkView</InterfaceName>
+ </Interface>
+ </Interfaces>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Activatable(1)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public App ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value=" App();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Overload("CreateInstance1")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Initialize">
+ <MemberSignature Language="C#" Value="public void Initialize (Windows.ApplicationModel.Core.CoreApplicationView applicationView);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Initialize([in]class Windows.ApplicationModel.Core.CoreApplicationView applicationView) runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Initialize(winrt::Windows::ApplicationModel::Core::CoreApplicationView const &amp; applicationView);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.Initialize(Windows.ApplicationModel.Core.CoreApplicationView)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="applicationView" Type="Windows.ApplicationModel.Core.CoreApplicationView" />
+ </Parameters>
+ <Docs>
+ <param name="applicationView">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Load">
+ <MemberSignature Language="C#" Value="public void Load (string entryPoint);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Load([in]string entryPoint) runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Load(std::wstring const &amp; entryPoint);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.Load(System.String)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="entryPoint" Type="System.String" />
+ </Parameters>
+ <Docs>
+ <param name="entryPoint">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="m_activated">
+ <MemberSignature Language="C#" Value="public Windows.UI.Core.CoreWindow m_activated { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class Windows.UI.Core.CoreWindow m_activated" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:Namespace222.__IAppPublicNonVirtuals.m_activated</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Windows.UI.Core.CoreWindow</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="m_target">
+ <MemberSignature Language="C#" Value="public Windows.UI.Composition.CompositionTarget m_target { get; set; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class Windows.UI.Composition.CompositionTarget m_target" />
+ <MemberType>Property</MemberType>
+ <Implements>
+ <InterfaceMember>P:Namespace222.__IAppPublicNonVirtuals.m_target</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Windows.UI.Composition.CompositionTarget</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Run">
+ <MemberSignature Language="C#" Value="public void Run ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Run() runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Run();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.Run</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="SetWindow">
+ <MemberSignature Language="C#" Value="public void SetWindow (Windows.UI.Core.CoreWindow window);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SetWindow([in]class Windows.UI.Core.CoreWindow window) runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="void SetWindow(winrt::Windows::UI::Core::CoreWindow const &amp; window);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.SetWindow(Windows.UI.Core.CoreWindow)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="window" Type="Windows.UI.Core.CoreWindow" />
+ </Parameters>
+ <Docs>
+ <param name="window">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="SetWindow1">
+ <MemberSignature Language="C#" Value="public void SetWindow1 (Windows.UI.Core.CoreWindow window);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void SetWindow1([in]class Windows.UI.Core.CoreWindow window) runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="void SetWindow1(winrt::Windows::UI::Core::CoreWindow const &amp; window);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Namespace222.__IAppPublicNonVirtuals.SetWindow1(Windows.UI.Core.CoreWindow)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="window" Type="Windows.UI.Core.CoreWindow" />
+ </Parameters>
+ <Docs>
+ <param name="window">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Uninitialize">
+ <MemberSignature Language="C#" Value="public void Uninitialize ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Uninitialize() runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="void Uninitialize();" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:Windows.ApplicationModel.Core.IFrameworkView.Uninitialize</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml
new file mode 100644
index 00000000..d6bd50be
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Class1.xml
@@ -0,0 +1,146 @@
+<Type Name="Class1" FullName="UwpTestWinRtComponentCpp.Class1">
+ <TypeSignature Language="C#" Value="public sealed class Class1" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Class1 extends System.Object" />
+ <TypeSignature Language="C++ WINRT" Value="class Class1 sealed" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Object</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Activatable(1)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public Class1 ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value=" Class1();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Overload("CreateInstance1")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="ComputeResult">
+ <MemberSignature Language="C#" Value="public Windows.Foundation.Collections.IVector&lt;double&gt; ComputeResult (double input);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Windows.Foundation.Collections.IVector`1&lt;float64&gt; ComputeResult([in]float64 input) runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::Collections::IVector&lt;double&gt; ComputeResult(double input);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:UwpTestWinRtComponentCpp.__IClass1PublicNonVirtuals.ComputeResult(System.Double)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Windows.Foundation.Collections.IVector&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="input" Type="System.Double" />
+ </Parameters>
+ <Docs>
+ <param name="input">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetPrimesOrdered">
+ <MemberSignature Language="C#" Value="public Windows.Foundation.IAsyncOperationWithProgress&lt;Windows.Foundation.Collections.IVector&lt;int&gt;,double&gt; GetPrimesOrdered (int first, int last);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Windows.Foundation.IAsyncOperationWithProgress`2&lt;class Windows.Foundation.Collections.IVector`1&lt;int32&gt;, float64&gt; GetPrimesOrdered([in]int32 first, [in]int32 last) runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IAsyncOperationWithProgress&lt;Windows::Foundation::Collections::IVector&lt;int&gt;, double&gt; GetPrimesOrdered(int first, int last);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:UwpTestWinRtComponentCpp.__IClass1PublicNonVirtuals.GetPrimesOrdered(System.Int32,System.Int32)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Windows.Foundation.IAsyncOperationWithProgress&lt;Windows.Foundation.Collections.IVector&lt;System.Int32&gt;,System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="first" Type="System.Int32" />
+ <Parameter Name="last" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="first">To be added.</param>
+ <param name="last">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="GetPrimesUnordered">
+ <MemberSignature Language="C#" Value="public Windows.Foundation.IAsyncActionWithProgress&lt;double&gt; GetPrimesUnordered (int first, int last);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class Windows.Foundation.IAsyncActionWithProgress`1&lt;float64&gt; GetPrimesUnordered([in]int32 first, [in]int32 last) runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::IAsyncActionWithProgress&lt;double&gt; GetPrimesUnordered(int first, int last);" />
+ <MemberType>Method</MemberType>
+ <Implements>
+ <InterfaceMember>M:UwpTestWinRtComponentCpp.__IClass1PublicNonVirtuals.GetPrimesUnordered(System.Int32,System.Int32)</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Windows.Foundation.IAsyncActionWithProgress&lt;System.Double&gt;</ReturnType>
+ </ReturnValue>
+ <Parameters>
+ <Parameter Name="first" Type="System.Int32" />
+ <Parameter Name="last" Type="System.Int32" />
+ </Parameters>
+ <Docs>
+ <param name="first">To be added.</param>
+ <param name="last">To be added.</param>
+ <summary>To be added.</summary>
+ <returns>To be added.</returns>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="primeFoundEvent">
+ <MemberSignature Language="C#" Value="public event UwpTestWinRtComponentCpp.PrimeFoundHandler primeFoundEvent;" />
+ <MemberSignature Language="ILAsm" Value=".event class UwpTestWinRtComponentCpp.PrimeFoundHandler primeFoundEvent" />
+ <MemberType>Event</MemberType>
+ <Implements>
+ <InterfaceMember>E:UwpTestWinRtComponentCpp.__IClass1PublicNonVirtuals.primeFoundEvent</InterfaceMember>
+ </Implements>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>UwpTestWinRtComponentCpp.PrimeFoundHandler</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Color1.xml b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Color1.xml
new file mode 100644
index 00000000..bf46d806
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/Color1.xml
@@ -0,0 +1,55 @@
+<Type Name="Color1" FullName="UwpTestWinRtComponentCpp.Color1">
+ <TypeSignature Language="C#" Value="public enum Color1" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed Color1 extends System.Enum" />
+ <TypeSignature Language="C++ WINRT" Value="enum Color1" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Enum</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName="Blue">
+ <MemberSignature Language="C#" Value="Blue" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype UwpTestWinRtComponentCpp.Color1 Blue = int32(1)" />
+ <MemberSignature Language="C++ WINRT" Value="Blue" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>UwpTestWinRtComponentCpp.Color1</ReturnType>
+ </ReturnValue>
+ <MemberValue>1</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ <Member MemberName="Red">
+ <MemberSignature Language="C#" Value="Red" />
+ <MemberSignature Language="ILAsm" Value=".field public static literal valuetype UwpTestWinRtComponentCpp.Color1 Red = int32(0)" />
+ <MemberSignature Language="C++ WINRT" Value="Red" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>UwpTestWinRtComponentCpp.Color1</ReturnType>
+ </ReturnValue>
+ <MemberValue>0</MemberValue>
+ <Docs>
+ <summary>To be added.</summary>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/CustomAttribute1.xml b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/CustomAttribute1.xml
new file mode 100644
index 00000000..3d5326a3
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/CustomAttribute1.xml
@@ -0,0 +1,74 @@
+<Type Name="CustomAttribute1" FullName="UwpTestWinRtComponentCpp.CustomAttribute1">
+ <TypeSignature Language="C#" Value="public sealed class CustomAttribute1 : Attribute" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed CustomAttribute1 extends System.Attribute" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Attribute</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public CustomAttribute1 ();" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() runtime managed" />
+ <MemberSignature Language="C++ WINRT" Value=" CustomAttribute1();" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Overload("CreateInstance1")</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters />
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Field1">
+ <MemberSignature Language="C#" Value="public bool Field1;" />
+ <MemberSignature Language="ILAsm" Value=".field public bool Field1" />
+ <MemberSignature Language="C++ WINRT" Value="bool Field1;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Boolean</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="Field2">
+ <MemberSignature Language="C#" Value="public Windows.Foundation.HResult Field2;" />
+ <MemberSignature Language="ILAsm" Value=".field public valuetype Windows.Foundation.HResult Field2" />
+ <MemberSignature Language="C++ WINRT" Value="winrt::Windows::Foundation::HResult Field2;" />
+ <MemberType>Field</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>Windows.Foundation.HResult</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandler.xml b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandler.xml
new file mode 100644
index 00000000..2e4c00ac
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandler.xml
@@ -0,0 +1,30 @@
+<Type Name="PrimeFoundHandler" FullName="UwpTestWinRtComponentCpp.PrimeFoundHandler">
+ <TypeSignature Language="C#" Value="public delegate void PrimeFoundHandler(int result);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed PrimeFoundHandler extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Guid(1538629431, 28309, 13279, 150, 105, 205, 62, 250, 110, 149, 1)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters>
+ <Parameter Name="result" Type="System.Int32" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="result">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandlerWithSpecificType.xml b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandlerWithSpecificType.xml
new file mode 100644
index 00000000..310f46d1
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/PrimeFoundHandlerWithSpecificType.xml
@@ -0,0 +1,30 @@
+<Type Name="PrimeFoundHandlerWithSpecificType" FullName="UwpTestWinRtComponentCpp.PrimeFoundHandlerWithSpecificType">
+ <TypeSignature Language="C#" Value="public delegate void PrimeFoundHandlerWithSpecificType(IMap&lt;double,float&gt; result);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed PrimeFoundHandlerWithSpecificType extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Guid(603281085, 10445, 12788, 160, 94, 209, 35, 22, 179, 109, 110)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters>
+ <Parameter Name="result" Type="Windows.Foundation.Collections.IMap&lt;System.Double,System.Single&gt;" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="result">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/SomethingHappenedEventHandler.xml b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/SomethingHappenedEventHandler.xml
new file mode 100644
index 00000000..3f01111a
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/UwpTestWinRtComponentCpp/SomethingHappenedEventHandler.xml
@@ -0,0 +1,32 @@
+<Type Name="SomethingHappenedEventHandler" FullName="UwpTestWinRtComponentCpp.SomethingHappenedEventHandler">
+ <TypeSignature Language="C#" Value="public delegate void SomethingHappenedEventHandler(Class1 sender, string s);" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed SomethingHappenedEventHandler extends System.MulticastDelegate" />
+ <AssemblyInfo>
+ <AssemblyName>UwpTestWinRtComponentCpp</AssemblyName>
+ <AssemblyVersion>255.255.255.255</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Delegate</BaseTypeName>
+ </Base>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Guid(2298425249, 32140, 14992, 141, 140, 226, 207, 230, 43, 42, 170)</AttributeName>
+ </Attribute>
+ <Attribute>
+ <AttributeName>Windows.Foundation.Metadata.Version(1)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Parameters>
+ <Parameter Name="sender" Type="UwpTestWinRtComponentCpp.Class1" />
+ <Parameter Name="s" Type="System.String" />
+ </Parameters>
+ <ReturnValue>
+ <ReturnType>System.Void</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <param name="sender">To be added.</param>
+ <param name="s">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Type>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/index.xml b/mdoc/Test/ex.expected-cppwinrtuwp/index.xml
new file mode 100644
index 00000000..e170436e
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/index.xml
@@ -0,0 +1,26 @@
+<Overview>
+ <Assemblies>
+ <Assembly Name="UwpTestWinRtComponentCpp" Version="255.255.255.255" />
+ </Assemblies>
+ <Remarks>To be added.</Remarks>
+ <Copyright>To be added.</Copyright>
+ <Types>
+ <Namespace Name="Namespace2">
+ <Type Name="Class2" Kind="Class" />
+ <Type Name="Class3" Kind="Class" />
+ <Type Name="Class4" Kind="Structure" />
+ </Namespace>
+ <Namespace Name="Namespace222">
+ <Type Name="App" Kind="Class" />
+ </Namespace>
+ <Namespace Name="UwpTestWinRtComponentCpp">
+ <Type Name="Class1" Kind="Class" />
+ <Type Name="Color1" Kind="Enumeration" />
+ <Type Name="CustomAttribute1" Kind="Class" />
+ <Type Name="PrimeFoundHandler" Kind="Delegate" />
+ <Type Name="PrimeFoundHandlerWithSpecificType" Kind="Delegate" />
+ <Type Name="SomethingHappenedEventHandler" Kind="Delegate" />
+ </Namespace>
+ </Types>
+ <Title>UwpTestWinRtComponentCpp</Title>
+</Overview>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace2.xml b/mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace2.xml
new file mode 100644
index 00000000..9078f3ef
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace2.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Namespace2">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace222.xml b/mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace222.xml
new file mode 100644
index 00000000..f80f6d94
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/ns-Namespace222.xml
@@ -0,0 +1,6 @@
+<Namespace Name="Namespace222">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/Test/ex.expected-cppwinrtuwp/ns-UwpTestWinRtComponentCpp.xml b/mdoc/Test/ex.expected-cppwinrtuwp/ns-UwpTestWinRtComponentCpp.xml
new file mode 100644
index 00000000..ee65eaef
--- /dev/null
+++ b/mdoc/Test/ex.expected-cppwinrtuwp/ns-UwpTestWinRtComponentCpp.xml
@@ -0,0 +1,6 @@
+<Namespace Name="UwpTestWinRtComponentCpp">
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+</Namespace>
diff --git a/mdoc/mdoc.Test/BasicFormatterTests.cs b/mdoc/mdoc.Test/BasicFormatterTests.cs
index 3cb521e6..d6a2b442 100644
--- a/mdoc/mdoc.Test/BasicFormatterTests.cs
+++ b/mdoc/mdoc.Test/BasicFormatterTests.cs
@@ -1,4 +1,5 @@
using System;
+using System.Collections.Generic;
using System.Linq;
using Mono.Cecil;
using Mono.Documentation.Updater;
@@ -8,6 +9,9 @@ namespace mdoc.Test
{
public abstract class BasicFormatterTests<T> where T : MemberFormatter
{
+ protected Dictionary<string, ModuleDefinition> moduleCash = new Dictionary<string, ModuleDefinition>();
+ protected Dictionary<string, TypeDefinition> typesCash = new Dictionary<string, TypeDefinition>();
+
protected abstract T formatter { get; }
protected MethodDefinition GetMethod(Type type, Func<MethodDefinition, bool> query)
@@ -18,7 +22,7 @@ namespace mdoc.Test
protected MethodDefinition GetMethod(TypeDefinition testclass, Func<MethodDefinition, bool> query)
{
var methods = testclass.Methods;
- var member = methods.FirstOrDefault(query).Resolve();
+ var member = methods.FirstOrDefault(query)?.Resolve();
if (member == null)
throw new Exception("Did not find the member in the test class");
return member;
@@ -27,7 +31,7 @@ namespace mdoc.Test
protected MethodDefinition GetProperty(TypeDefinition testclass, Func<MethodDefinition, bool> query)
{
var methods = testclass.Methods;
- var member = methods.FirstOrDefault(query).Resolve();
+ var member = methods.FirstOrDefault(query)?.Resolve();
if (member == null)
throw new Exception("Did not find the member in the test class");
return member;
@@ -35,7 +39,17 @@ namespace mdoc.Test
protected TypeDefinition GetType(string filepath, string classname)
{
- var module = ModuleDefinition.ReadModule(filepath);
+ if (typesCash.ContainsKey(classname))
+ return typesCash[classname];
+
+
+ if (!moduleCash.ContainsKey(filepath))
+ {
+ var readModule = ModuleDefinition.ReadModule(filepath);
+ moduleCash.Add(filepath, readModule);
+ }
+
+ var module = moduleCash[filepath];
var types = module.GetTypes();
var testclass = types
.SingleOrDefault(t => t.FullName == classname);
@@ -43,7 +57,10 @@ namespace mdoc.Test
{
throw new Exception($"Test was unable to find type {classname}");
}
- return testclass.Resolve();
+
+ var typeDef = testclass.Resolve();
+ typesCash.Add(classname, typeDef);
+ return typeDef;
}
protected virtual TypeDefinition GetType(Type type)
@@ -54,7 +71,7 @@ namespace mdoc.Test
protected MemberReference GetProperty(TypeDefinition type, string memberName)
{
- var property = type.Properties.SingleOrDefault(i => i.Name == memberName);
+ var property = type.Properties.FirstOrDefault(i => i.Name == memberName);
if (property == null)
throw new Exception($"Can't find property {memberName}");
return property;
@@ -83,6 +100,14 @@ namespace mdoc.Test
Assert.AreEqual(expected, signature);
}
+ protected void TestTypeSignature(string libPath, string fullTypeName, string expected)
+ {
+ expected = FormatEndings(expected);
+ var type = GetType(libPath, fullTypeName);
+ var signature = formatter.GetDeclaration(type);
+ Assert.AreEqual(expected, signature);
+ }
+
private string GetTypeSignature(Type type)
{
var tref = GetType(type);
@@ -96,6 +121,14 @@ namespace mdoc.Test
Assert.AreEqual(FormatEndings(expected), signature);
}
+ protected void TestMethodSignature(string libPath, string fullTypeName, string memberName, string expected)
+ {
+ var type = GetType(libPath, fullTypeName);
+ var method = GetMethod(type, i => i.Name == memberName);
+ var signature = formatter.GetDeclaration(method);
+ Assert.AreEqual(FormatEndings(expected), signature);
+ }
+
private string GetMethodSignature(Type type, string memberName)
{
var tref = GetType(type);
@@ -116,6 +149,14 @@ namespace mdoc.Test
return formatter.GetDeclaration(GetProperty(tref, memberName));
}
+ protected void TestPropertySignature(string libPath, string fullTypeName, string memberName, string expected)
+ {
+ var type = GetType(libPath, fullTypeName);
+ var property = GetProperty(type, memberName);
+ var signature = formatter.GetDeclaration(property);
+ Assert.AreEqual(FormatEndings(expected), signature);
+ }
+
protected void TestEventSignature(Type type, string expected, string memberName)
{
var signature = GetEventSignature(type, memberName);
@@ -128,6 +169,14 @@ namespace mdoc.Test
return formatter.GetDeclaration(GetEvent(tref, memberName));
}
+ protected void TestEventSignature(string libPath, string fullTypeName, string memberName, string expected)
+ {
+ var type = GetType(libPath, fullTypeName);
+ var @event = GetEvent(type, memberName);
+ var signature = formatter.GetDeclaration(@event);
+ Assert.AreEqual(FormatEndings(expected), signature);
+ }
+
protected void TestFieldSignature(Type type, string expected, string memberName)
{
var usage = GetFieldUsage(type, memberName);
@@ -142,9 +191,18 @@ namespace mdoc.Test
return signature;
}
+ protected void TestFieldSignature(string libPath, string fullTypeName, string memberName, string expected)
+ {
+ var type = GetType(libPath, fullTypeName);
+ var field = GetField(type, memberName);
+ var signature = formatter.GetDeclaration(field);
+ Assert.AreEqual(FormatEndings(expected), signature);
+ }
+
protected static string FormatEndings(string s)
{
return s?.Replace("\r\n", MemberFormatter.GetLineEnding());
}
}
-} \ No newline at end of file
+
+}
diff --git a/mdoc/mdoc.Test/CppCxFormatterMembersTests.cs b/mdoc/mdoc.Test/CppCxFormatterMembersTests.cs
new file mode 100644
index 00000000..8b1e73e1
--- /dev/null
+++ b/mdoc/mdoc.Test/CppCxFormatterMembersTests.cs
@@ -0,0 +1,143 @@
+using Mono.Documentation.Updater.Formatters.CppFormatters;
+using Mono_DocTest;
+using NUnit.Framework;
+using Cpp = Mono_DocTest_Generic;
+
+namespace mdoc.Test
+{
+ [TestFixture]
+ [Category("CppCx")]
+ public class CppCxFormatterMembersTests : BasicFormatterTests<CppCxFullMemberFormatter>
+ {
+ protected override CppCxFullMemberFormatter formatter { get; } = new CppCxFullMemberFormatter();
+
+ private const string CppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
+ private const string CSharpTestLib = "../../../../external/Test/CSharpExample.dll";
+
+ [Test]
+ [Category("Method")]
+ public void Method_ComputeResult()
+ {
+ TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "ComputeResult",
+ @"public:
+ Windows::Foundation::Collections::IVector<double> ^ ComputeResult(double input);");
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_GetPrimesOrdered()
+ {
+ TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "GetPrimesOrdered",
+ @"public:
+ Windows::Foundation::IAsyncOperationWithProgress<Windows::Foundation::Collections::IVector<int> ^, double> ^ GetPrimesOrdered(int first, int last);");
+
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_GetPrimesUnordered()
+ {
+ TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "GetPrimesUnordered",
+ @"public:
+ Windows::Foundation::IAsyncActionWithProgress<double> ^ GetPrimesUnordered(int first, int last);");
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_WinRtTypeInterfaceImplementation()
+ {
+ TestMethodSignature(CppCxTestLibName, "Namespace222.App", "SetWindow",
+ @"public:
+ virtual void SetWindow(Windows::UI::Core::CoreWindow ^ window) = Windows::ApplicationModel::Core::IFrameworkView::SetWindow;");
+ }
+
+ [Test]
+ [Category("Field")]
+ public void Field_CustomAttributeFundamentalType()
+ {
+ TestFieldSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.CustomAttribute1", "Field1", "public: bool Field1;");
+ }
+
+
+ [Test]
+ [Category("Field")]
+ public void Field_CustomAttributуSpecificType()
+ {
+ TestFieldSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.CustomAttribute1", "Field2", "public: Windows::Foundation::HResult Field2;");
+ }
+
+ [Test]
+ [Category("Field")]
+ public void Field_EnumField()
+ {
+ TestFieldSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Color1", "Red", "Red");
+ }
+
+ [Test]
+ [Category("Field")]
+ public void Field_ValueType_String()
+ {
+ TestFieldSignature(CppCxTestLibName, "Namespace2.Class4", "StringField", "public: Platform::String ^ StringField;");
+ }
+
+ [Test]
+ [Category("Event")]
+ public void Event_Class1_primeFoundEvent()
+ {
+ TestEventSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "primeFoundEvent", @"public:
+ event UwpTestWinRtComponentCpp::PrimeFoundHandler ^ primeFoundEvent;");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void Property_FundamentalType()
+ {
+ TestPropertySignature(CppCxTestLibName, "Namespace2.Class3", "LongProperty", @"public:
+ property long long LongProperty { long long get(); void set(long long value); };");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void Property_ArrayOfTypeProperty()
+ {
+ TestPropertySignature(CppCxTestLibName, "Namespace2.Class3", "ArrayOfTypeProperty", @"public:
+ property Platform::Array <Platform::Type ^> ^ ArrayOfTypeProperty { Platform::Array <Platform::Type ^> ^ get(); void set(Platform::Array <Platform::Type ^> ^ value); };");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void Property_ArrayOfTypePropertyProtected()
+ {
+ TestPropertySignature(CppCxTestLibName, "Namespace2.Class3", "ArrayOfTypePropertyProtected", @"protected:
+ property Platform::Array <Platform::Type ^> ^ ArrayOfTypePropertyProtected { Platform::Array <Platform::Type ^> ^ get(); void set(Platform::Array <Platform::Type ^> ^ value); };");
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_ParamsKeyword_M6()
+ {
+ TestMethodSignature(typeof(Widget), null, "M6");
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_DefaultParameters()
+ {
+ TestMethodSignature(CSharpTestLib, "Mono.DocTest.Widget", "Default", null);
+ }
+
+ [TestFixtureTearDown]
+ public void TearDown()
+ {
+ moduleCash.Clear();
+ }
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Exception_NestedClassWithSameName()
+ {
+ TestTypeSignature(CSharpTestLib, "Mono.DocTest.Widget/NestedClass", null);
+ }
+ }
+
+}
+
diff --git a/mdoc/mdoc.Test/CppCxFormatterTypesTests.cs b/mdoc/mdoc.Test/CppCxFormatterTypesTests.cs
new file mode 100644
index 00000000..be2bd186
--- /dev/null
+++ b/mdoc/mdoc.Test/CppCxFormatterTypesTests.cs
@@ -0,0 +1,197 @@
+using System;
+using Mono.Cecil;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
+using Mono_DocTest;
+using Mono_DocTest_Generic;
+using NUnit.Framework;
+
+namespace mdoc.Test
+{
+ [TestFixture]
+ [Category("CppCx")]
+ public class CppCxFormatterTypesTests : BasicFormatterTests<CppCxMemberFormatter>
+ {
+ protected override CppCxMemberFormatter formatter => new CppCxMemberFormatter();
+
+ private string _cppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
+
+ protected override TypeDefinition GetType(Type type)
+ {
+ var moduleName = type.Module.FullyQualifiedName;
+
+ var tref = GetType(moduleName, type.FullName?.Replace("+", "/"));
+ return tref;
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_CustomAttribute()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.CustomAttribute1",
+ "public ref class CustomAttribute1 sealed : Platform::Metadata::Attribute");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_Class1()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.Class1",
+ "public ref class Class1 sealed");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_delegate()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.PrimeFoundHandler",
+ "public delegate void PrimeFoundHandler(int result);");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_delegateWithSpecificType()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.PrimeFoundHandlerWithSpecificType",
+ "public delegate void PrimeFoundHandlerWithSpecificType(IMap<double, float> ^ result);");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_delegateWithCustomType()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.SomethingHappenedEventHandler",
+ "public delegate void SomethingHappenedEventHandler(Class1 ^ sender, Platform::String ^ s);");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_enum()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.Color1", "public enum class Color1");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_publicUnsealedClass()
+ {
+ TestTypeSignature(_cppCxTestLibName, "Namespace2.Class2", @"public ref class Class2 : Windows::UI::Xaml::Application");
+
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_ValueClass()
+ {
+ TestTypeSignature(_cppCxTestLibName, "Namespace2.Class4", "public value class Class4");
+ }
+
+ #region NoSupport
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_GenericDelegate()
+ {
+ TestTypeSignature(typeof(Action22<>), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_DelegateWithSystemType()
+ {
+ TestTypeSignature(typeof(DelegateWithNetSystemType), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_NoNamespace()
+ {
+ TestTypeSignature(typeof(NoNamespace), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_StandardType()
+ {
+ TestMethodSignature(typeof(UseLists), null, nameof(UseLists.Process));
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_PublicNestedType()
+ {
+ TestTypeSignature(typeof(Widget.NestedClass), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_PublicNestedEnum()
+ {
+ TestTypeSignature(typeof(Widget.NestedEnum), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_JaggedArrays()
+ {
+ TestMethodSignature(typeof(Widget), null, "M2");
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_PublicConstructorUnsealedClass()
+ {
+ TestTypeSignature(typeof(DocAttribute), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_PublicRefClassWithGeneric()
+ {
+ TestTypeSignature(typeof(GenericBase<>), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_GenericInterfaceWithConstraints()
+ {
+ TestTypeSignature(typeof(IFooNew<>), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_ValueTypeWithNotAllowedType()
+ {
+ TestTypeSignature(typeof(ValueClassSpecificField), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_PublicIndexedProperty()
+ {
+ TestPropertySignature(typeof(Widget), null, "indexedProperty");
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_CustomException()
+ {
+ TestTypeSignature(typeof(CustomException), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Exception_ArgumentNullExceptionField()
+ {
+ TestFieldSignature(typeof(CustomException), null, "ArgumentNullExceptionField");
+ }
+
+ #endregion
+
+ [TestFixtureTearDown]
+ public void TearDown()
+ {
+ moduleCash.Clear();
+ }
+ }
+}
+
diff --git a/mdoc/mdoc.Test/CppFormatterTests.cs b/mdoc/mdoc.Test/CppFormatterTests.cs
new file mode 100644
index 00000000..bc87eabd
--- /dev/null
+++ b/mdoc/mdoc.Test/CppFormatterTests.cs
@@ -0,0 +1,194 @@
+using System;
+using Mono.Cecil;
+using NUnit.Framework;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
+using Mono_DocTest_Generic;
+using Mono_DocTest;
+
+namespace mdoc.Test
+{
+ public class CppFormatterTests : BasicFormatterTests<CppMemberFormatter>
+ {
+ #region Types
+ private static readonly CppMemberFormatter cppMemberFormatter = new CppMemberFormatter();
+ protected override CppMemberFormatter formatter => cppMemberFormatter;
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_Extensions() =>
+ TestTypeSignature(typeof(Extensions), @"public ref class Extensions abstract sealed");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_GenericBase() =>
+ TestTypeSignature(typeof(GenericBase<>), @"generic <typename U>
+public ref class GenericBase");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_MyList() =>
+ TestTypeSignature(typeof(MyList<>), @"generic <typename T>
+public ref class MyList : Mono_DocTest_Generic::GenericBase<T>, System::Collections::Generic::IEnumerable<cli::array <int> ^>");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_IFoo() =>
+ TestTypeSignature(typeof(IFoo<>), @"generic <typename T>
+public interface class IFoo");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_MyList1() =>
+ TestTypeSignature(typeof(MyList1<,>), @"generic <typename A, typename B>
+public ref class MyList1 : Mono_DocTest_Generic::GenericBase<System::Collections::Generic::Dictionary<A, B> ^>, Mono_DocTest_Generic::IFoo<A>, System::Collections::Generic::ICollection<A>, System::Collections::Generic::IEnumerable<A>, System::Collections::Generic::IEnumerator<A>");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_Color() =>
+ TestTypeSignature(typeof(Color), @"public enum class Color");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_Nonamespace() =>
+ TestTypeSignature(typeof(NoNamespace), @"public ref class NoNamespace");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_DocAttribute() =>
+ TestTypeSignature(typeof(DocAttribute), @"public ref class DocAttribute : Attribute");
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_Environment1() =>
+ TestTypeSignature(typeof(Environment1), @"public ref class Environment1 abstract sealed");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_IProcess() =>
+ TestTypeSignature(typeof(IProcess), @"public interface class IProcess");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_DocValueType() =>
+ TestTypeSignature(typeof(DocValueType), @"public value class DocValueType : Mono_DocTest::IProcess");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_D() =>
+ TestTypeSignature(typeof(D), @"public delegate System::Object ^ D(Func<System::String ^, System::Object ^, System::Object ^> ^ value);");
+
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_NonFlagEnum() =>
+ TestFieldSignature(typeof(DocAttribute),
+ "public: Color NonFlagsEnum;",
+ nameof(DocAttribute.NonFlagsEnum));
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_Widget() =>
+ TestTypeSignature(typeof(Widget), @"public ref class Widget : Mono_DocTest::IProcess");
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_FooEventArgs() =>
+ TestTypeSignature(typeof(GenericBase<>.FooEventArgs), @"public: ref class GenericBase<U>::FooEventArgs : EventArgs");
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_StaticField1() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: static initonly GenericBase<U> ^ StaticField1;",
+ nameof(GenericBase<int>.StaticField1));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_NonFlagsEnum() =>
+ TestFieldSignature(typeof(DocAttribute),
+ "public: Color NonFlagsEnum;",
+ nameof(DocAttribute.NonFlagsEnum));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_Pointers_ppValues() =>
+ TestFieldSignature(typeof(Widget),
+ "public: float** ppValues;",
+ nameof(Widget.ppValues));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_Pointers_pCount() =>
+ TestFieldSignature(typeof(Widget),
+ "public: int* pCount;",
+ nameof(Widget.pCount));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_value() =>
+ TestFieldSignature(typeof(Widget.NestedClass),
+ "public: int value;",
+ nameof(Widget.NestedClass.value));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_protectedPublic_monthlyAverage()
+ {
+ TestFieldSignature(typeof(Widget), @"protected public: initonly double monthlyAverage;", "monthlyAverage");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void PropertySignature_IndexedPropertyNamed()
+ {
+ TestPropertySignature(typeof(Widget), @"public:
+ property long indexedProperty[long] { long get(long index); void set(long index, long value); };",
+ "indexedProperty");
+ }
+
+ [Test]
+ [Category("Properties")]
+ public void PropertySignature_IndexedPropertyDefault()
+ {
+ TestPropertySignature(typeof(Widget), @"public:
+ property int default[System::String ^, int] { int get(System::String ^ s, int i); void set(System::String ^ s, int i, int value); };",
+ "Item");
+ }
+
+
+ [Test]
+ [Category("Properties")]
+ public void PropertySignature_Current3() =>
+ TestPropertySignature(typeof(MyList1<,>), @"public:
+ virtual property System::Object ^ Current3 { System::Object ^ get(); };",
+ nameof(MyList1<int,int>.Current3));
+
+ [Test]
+ [Category("Properties")]
+ public void PropertySignature_B() =>
+ TestPropertySignature(typeof(Widget.IMenuItem), @"public:
+ property int B { int get(); void set(int value); };",
+ nameof(Widget.IMenuItem.B));
+ [Test]
+ [Category("Properties")]
+ public void PropertySignature_Count() =>
+ TestPropertySignature(typeof(MyList1<,>), @"public:
+ virtual property int Count { int get(); };",
+ nameof(MyList1<int, int>.Count));
+
+ [Test]
+ [Category("Types")]
+ public void TypeSignature_AsyncCallback() =>
+ TestTypeSignature(typeof(AsyncCallback), @"public delegate void AsyncCallback(IAsyncResult ^ ar);");
+
+ #endregion
+
+ protected override TypeDefinition GetType(Type type)
+ {
+ var moduleName = type.Module.FullyQualifiedName;
+
+ var tref = GetType(moduleName, type.FullName.Replace("+", "/"));
+ return tref;
+ }
+
+ }
+}
diff --git a/mdoc/mdoc.Test/CppFullFormatterTests.cs b/mdoc/mdoc.Test/CppFullFormatterTests.cs
new file mode 100644
index 00000000..9cd417d8
--- /dev/null
+++ b/mdoc/mdoc.Test/CppFullFormatterTests.cs
@@ -0,0 +1,308 @@
+using System;
+using Mono.Cecil;
+using NUnit.Framework;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
+using Mono_DocTest_Generic;
+using Cpp=Mono_DocTest_Generic;
+using Mono_DocTest;
+
+namespace mdoc.Test
+{
+ public class CppFullFormatterTests: BasicFormatterTests<CppFullMemberFormatter>
+ {
+ private static readonly CppFullMemberFormatter cppFullMemberFormatter = new CppFullMemberFormatter();
+ protected override CppFullMemberFormatter formatter => cppFullMemberFormatter;
+ private const string CSharpTestLib = "../../../../external/Test/CSharpExample.dll";
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_Bar() =>
+ TestMethodSignature(typeof(Cpp.Extensions), @"public:
+generic <typename T>
+[System::Runtime::CompilerServices::Extension]
+ static void Bar(IFoo<T> ^ self, System::String ^ s);",
+ nameof(Cpp.Extensions.Bar));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_ForEach() =>
+ TestMethodSignature(typeof(Cpp.Extensions), @"public:
+generic <typename T>
+[System::Runtime::CompilerServices::Extension]
+ static void ForEach(System::Collections::Generic::IEnumerable<T> ^ self, Action<T> ^ a);",
+ nameof(Cpp.Extensions.ForEach));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_ToEnumerable() =>
+ TestMethodSignature(typeof(Cpp.Extensions), @"public:
+generic <typename T>
+[System::Runtime::CompilerServices::Extension]
+ static System::Collections::Generic::IEnumerable<T> ^ ToEnumerable(T self);",
+ nameof(Cpp.Extensions.ToEnumerable));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_ToDouble() =>
+ TestMethodSignature(typeof(Cpp.Extensions), @"public:
+generic <typename T>
+ where T : IFoo<T>[System::Runtime::CompilerServices::Extension]
+ static double ToDouble(T val);",
+ nameof(Cpp.Extensions.ToDouble));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_BaseMethod() =>
+ TestMethodSignature(typeof(GenericBase<>), @"public:
+generic <typename S>
+ U BaseMethod(S genericParameter);",
+ nameof(GenericBase<int>.BaseMethod));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_Method() =>
+ TestMethodSignature(typeof(IFoo<>), @"public:
+generic <typename U>
+ T Method(T t, U u);",
+ nameof(IFoo<int>.Method));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstInt() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const int ConstInt;",
+ nameof(GenericBase<int>.ConstInt));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstLong() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const long ConstLong;",
+ nameof(GenericBase<int>.ConstLong));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstDecimal() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const System::Decimal ConstDecimal;",
+ nameof(GenericBase<int>.ConstDecimal));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstShort() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const short ConstShort;",
+ nameof(GenericBase<int>.ConstShort));
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstUint16() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const System::UInt16 ConstUint16;",
+ nameof(GenericBase<int>.ConstUint16));
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstUint32() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const System::UInt32 ConstUint32;",
+ nameof(GenericBase<int>.ConstUint32));
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstUint64() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const System::UInt64 ConstUint64;",
+ nameof(GenericBase<int>.ConstUint64));
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstFloat() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const float ConstFloat;",
+ nameof(GenericBase<int>.ConstFloat));
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstBool() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const bool ConstBool;",
+ nameof(GenericBase<int>.ConstBool));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstChar() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const char ConstChar;",
+ nameof(GenericBase<int>.ConstChar));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstObject() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const System::Object ^ ConstObject;",
+ nameof(GenericBase<int>.ConstObject));
+
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstString() =>
+ TestFieldSignature(typeof(GenericBase<>),
+ "public: const System::String ^ ConstString;",
+ nameof(GenericBase<int>.ConstString));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_AsReadOnly() =>
+ TestMethodSignature(typeof(Array1), @"public:
+generic <typename T>
+ static System::Collections::ObjectModel::ReadOnlyCollection<T> ^ AsReadOnly(cli::array <T> ^ array);",
+ nameof(Array1.AsReadOnly));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_UseT() =>
+ TestMethodSignature(typeof(MyList<>.Helper<,>), @"public:
+ void UseT(T a, U b, V c);",
+ nameof(MyList<int>.Helper<int,int>.UseT));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_s() =>
+ TestMethodSignature(typeof(Widget), @"public:
+ Func<System::String ^, System::Object ^> ^ Dynamic2(Func<System::String ^, System::Object ^> ^ value);",
+ nameof(Widget.Dynamic2));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_M2() =>
+ TestMethodSignature(typeof(Widget), @"public:
+ void M2(cli::array <short> ^ x1, cli::array <int, 2> ^ x2, cli::array <cli::array <long> ^> ^ x3);",
+ nameof(Widget.M2));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_PointersOnHat_JaggedArray_M5() =>
+ TestMethodSignature(typeof(Widget), @"protected:
+ void M5(void* pv, cli::array <cli::array <double, 2> ^> ^* pd);",
+ "M5");
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_PointersOnHat_ReferenceType_M55() =>
+ TestMethodSignature(typeof(Widget), @"protected:
+ void M55(void* pv, System::String ^* pd);",
+ "M55");
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_GenericRefParams_RefMethod() =>
+ TestMethodSignature(typeof(MyList<>), @"public:
+generic <typename U>
+ void RefMethod(T % t, U % u);",
+ nameof(MyList<int>.RefMethod));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_RefParams_M1() =>
+ TestMethodSignature(typeof(Widget), @"public:
+ void M1(long c, [Runtime::InteropServices::Out] float % f, Mono_DocTest::DocValueType % v);",
+ nameof(Widget.M1));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_RefParamsWithHat_RefMethod() =>
+ TestMethodSignature(typeof(Array1), @"public:
+generic <typename T>
+ static void Resize(cli::array <T> ^ % array, int newSize);",
+ nameof(Array1.Resize));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_Reset() =>
+ TestMethodSignature(typeof(MyList1<,>), @"public:
+ virtual void Reset();",
+ nameof(MyList1<int,int>.Reset));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_GetEnumerator1() =>
+ TestMethodSignature(typeof(MyList<>), @"public:
+ virtual System::Collections::IEnumerator ^ GetEnumerator1() = System::Collections::IEnumerable::GetEnumerator;",
+ nameof(MyList<int>.GetEnumerator1));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_GetEnumeratorIEnumerable() =>
+ TestMethodSignature(typeof(MyList1<,>), @"public:
+ virtual System::Collections::IEnumerator ^ GetEnumerator1() = System::Collections::IEnumerable::GetEnumerator;",
+ nameof(MyList1<int,int>.GetEnumerator1));
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_GetEnumeratorGenericIEnumerable()
+ {
+ TestMethodSignature(
+ typeof(MyList1<,>), @"public:
+ virtual System::Collections::Generic::IEnumerator<A> ^ GetEnumerator() = System::Collections::Generic::IEnumerable<A>::GetEnumerator;",
+ nameof(MyList1<int, int>.GetEnumerator));
+
+ }
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_opAddition() =>
+ TestMethodSignature(typeof(Widget), @"public:
+ static Mono_DocTest::Widget ^ operator +(Mono_DocTest::Widget ^ x1, Mono_DocTest::Widget ^ x2);",
+ "op_Addition");
+
+
+ [Test]
+ [Category("Methods")]
+ [Category("NoSupport")]
+ public void MethodSignature_NoSupport_DefaultValue() =>
+ TestMethodSignature(CSharpTestLib, "Mono.DocTest.Widget", "Default",
+ null);
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Exception_NestedClassWithSameName()
+ {
+ TestTypeSignature(CSharpTestLib, "Mono.DocTest.Widget/NestedClass", null);
+ }
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_opExplicit() =>
+ TestMethodSignature(typeof(Widget), @"public:
+ static explicit operator int(Mono_DocTest::Widget ^ x);",
+ "op_Explicit");
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_opImplicit() =>
+ TestMethodSignature(typeof(Widget), @"public:
+ static operator long(Mono_DocTest::Widget ^ x);",
+ "op_Implicit");
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_constructor()
+ {
+ TestMethodSignature(typeof(Widget), @"public:
+ Widget(Converter<System::String ^, System::String ^> ^ c);",
+ ".ctor");
+ }
+
+ [Test]
+ [Category("Methods")]
+ public void MethodSignature_ParamsKeyword_M6()
+ {
+ TestMethodSignature(typeof(Widget), @"protected:
+ void M6(int i, ... cli::array <System::Object ^> ^ args);",
+ "M6");
+ }
+
+ protected override TypeDefinition GetType(Type type)
+ {
+ var moduleName = type.Module.FullyQualifiedName;
+
+ var tref = GetType(moduleName, type.FullName.Replace("+", "/"));
+ return tref;
+ }
+ }
+}
diff --git a/mdoc/mdoc.Test/CppWinRtFormatterTests.cs b/mdoc/mdoc.Test/CppWinRtFormatterTests.cs
new file mode 100644
index 00000000..0a2b361d
--- /dev/null
+++ b/mdoc/mdoc.Test/CppWinRtFormatterTests.cs
@@ -0,0 +1,146 @@
+using System;
+using Mono.Cecil;
+using Mono.Documentation.Updater.CppFormatters;
+using Mono.Documentation.Updater.Formatters.CppFormatters;
+using Mono_DocTest;
+using Mono_DocTest_Generic;
+using NUnit.Framework;
+
+namespace mdoc.Test
+{
+ [TestFixture]
+ public class CppWinRtFormatterTests : BasicFormatterTests<CppWinRtMemberFormatter>
+ {
+ private static readonly CppWinRtMemberFormatter CppWinRtMemberFormatter = new CppWinRtMemberFormatter();
+ protected override CppWinRtMemberFormatter formatter => CppWinRtMemberFormatter;
+
+ private string _cppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
+ private const string CSharpTestLib = "../../../../external/Test/CSharpExample.dll";
+
+ protected override TypeDefinition GetType(Type type)
+ {
+ var moduleName = type.Module.FullyQualifiedName;
+
+ var tref = GetType(moduleName, type.FullName?.Replace("+", "/"));
+ return tref;
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_enum()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.Color1", "enum Color1");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_publicSealedClass_Class1()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.Class1",
+ "class Class1 sealed");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_publicUnsealedClass_Class2()
+ {
+ TestTypeSignature(_cppCxTestLibName, "Namespace2.Class2", @"class Class2 : winrt::Windows::UI::Xaml::Application");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_Struct_Class4()
+ {
+ TestTypeSignature(_cppCxTestLibName, "Namespace2.Class4", "struct Class4");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_GenericInterface()
+ {
+ TestTypeSignature(typeof(IFoo<>), @"template <typename T>
+__interface IFoo");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_GenericClass()
+ {
+ TestTypeSignature(typeof(MyList<>.Helper<,>), @"template <typename U, typename V>
+[Windows::Foundation::Metadata::WebHostHidden]
+class MyList<T>::Helper");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_NestedClass()
+ {
+ TestTypeSignature(typeof(Widget.NestedClass.Double), @"[Windows::Foundation::Metadata::WebHostHidden]
+class Widget::NestedClass::Double");
+ }
+
+ [Test]
+ [Category("Type")]
+ public void TypeSignature_WebHostHiddenAttribute()
+ {
+ TestTypeSignature(typeof(Widget), @"[Windows::Foundation::Metadata::WebHostHidden]
+class Widget : Mono_DocTest::IProcess");
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Delegate()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.PrimeFoundHandlerWithSpecificType", null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_DelegateWithCustomType()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.SomethingHappenedEventHandler",
+ null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_CustomAttribute()
+ {
+ TestTypeSignature(_cppCxTestLibName, "UwpTestWinRtComponentCpp.CustomAttribute1", null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_CustomException()
+ {
+ TestTypeSignature(typeof(CustomException), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Exception_ArgumentNullExceptionField()
+ {
+ TestFieldSignature(typeof(CustomException), null, "ArgumentNullExceptionField");
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Exception_InterfaceWithGenericConstraints()
+ {
+ TestTypeSignature(typeof(IFooNew<>), null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Exception_ClassWithGenericConstraints()
+ {
+ TestTypeSignature(typeof(GenericConstraintClass<>), null);
+ }
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Exception_NestedClassWithSameName()
+ {
+ TestTypeSignature(CSharpTestLib, "Mono.DocTest.Widget/NestedClass", null);
+ }
+ }
+}
diff --git a/mdoc/mdoc.Test/CppWinRtMembersTests.cs b/mdoc/mdoc.Test/CppWinRtMembersTests.cs
new file mode 100644
index 00000000..c5acfd26
--- /dev/null
+++ b/mdoc/mdoc.Test/CppWinRtMembersTests.cs
@@ -0,0 +1,134 @@
+using Mono.Documentation.Updater.CppFormatters;
+using Mono_DocTest;
+using NUnit.Framework;
+using Cpp = Mono_DocTest_Generic;
+
+namespace mdoc.Test
+{
+ [TestFixture]
+ public class CppWinRtMembersTests: BasicFormatterTests<CppWinRtFullMemberFormatter>
+ {
+ private static readonly CppWinRtFullMemberFormatter CppWinRtFullMemberFormatter = new CppWinRtFullMemberFormatter();
+ protected override CppWinRtFullMemberFormatter formatter => CppWinRtFullMemberFormatter;
+
+ private string CppCxTestLibName = "../../../../external/Test/UwpTestWinRtComponentCpp.winmd";
+ private const string CSharpTestLib = "../../../../external/Test/CSharpExample.dll";
+
+ [Test]
+ [Category("Method")]
+ public void Method_ComputeResult()
+ {
+ TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "ComputeResult",
+ @"winrt::Windows::Foundation::Collections::IVector<double> ComputeResult(double input);");
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_GetPrimesOrdered()
+ {
+ TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "GetPrimesOrdered",
+ @"winrt::Windows::Foundation::IAsyncOperationWithProgress<Windows::Foundation::Collections::IVector<int>, double> GetPrimesOrdered(int first, int last);");
+
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_GetPrimesUnordered()
+ {
+ TestMethodSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "GetPrimesUnordered",
+ @"winrt::Windows::Foundation::IAsyncActionWithProgress<double> GetPrimesUnordered(int first, int last);");
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_DefaultParameters()
+ {
+ TestMethodSignature(CSharpTestLib, "Mono.DocTest.Widget", "Default",
+ @"void Default(int a = 1, int b = 2);");
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_RefType()
+ {
+ TestMethodSignature(CppCxTestLibName, "Namespace222.App", "SetWindow1",
+ @"void SetWindow1(winrt::Windows::UI::Core::CoreWindow const & window);");
+ }
+
+ [Test]
+ [Category("Method")]
+ public void Method_WinRtTypeInterfaceImplementation()
+ {
+ TestMethodSignature(CppCxTestLibName, "Namespace222.App", "SetWindow",
+ @"void SetWindow(winrt::Windows::UI::Core::CoreWindow const & window);");
+ }
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstLong() =>
+ TestFieldSignature(typeof(Cpp.GenericBase<>),
+ "const long ConstLong;",
+ nameof(Cpp.GenericBase<int>.ConstLong));
+
+ [Test]
+ [Category("Fields")]
+ public void FieldSignature_ConstChar() =>
+ TestFieldSignature(typeof(Cpp.GenericBase<>),
+ "const char ConstChar;",
+ nameof(Cpp.GenericBase<int>.ConstChar));
+
+
+
+ #region NoSupport
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Property()
+ {
+ TestPropertySignature(CppCxTestLibName, "Namespace2.Class3", "LongProperty", null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_Event()
+ {
+ TestEventSignature(CppCxTestLibName, "UwpTestWinRtComponentCpp.Class1", "primeFoundEvent", null);
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_ExtensionMethod()
+ {
+ TestMethodSignature(typeof(Cpp.Extensions), null, nameof(Cpp.Extensions.Bar));
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_SystemTypes()
+ {
+ TestMethodSignature(typeof(Cpp.Extensions), null, nameof(Cpp.Extensions.Bar));
+ }
+
+
+ [Test]
+ [Category("NoSupport")]
+ public void MethodSignature_ParamsKeyword_M6()
+ {
+ TestMethodSignature(typeof(Widget), null, "M6");
+ }
+
+ [Test]
+ [Category("NoSupport")]
+ public void NoSupport_StandardType()
+ {
+ TestMethodSignature(typeof(UseLists), null, nameof(UseLists.Process));
+ }
+
+ [Test]
+ [Category("Fields")]
+ public void NoSupport_Decimal() =>
+ TestFieldSignature(typeof(Cpp.GenericBase<>),
+ null,
+ nameof(Cpp.GenericBase<int>.ConstDecimal));
+#endregion
+ }
+}
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp
new file mode 100644
index 00000000..44d5f4cf
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.cpp
@@ -0,0 +1,166 @@
+#include "pch.h"
+#include "Class1.h"
+
+#include <ppltasks.h>
+#include <concurrent_vector.h>
+
+using namespace concurrency;
+using namespace Platform::Collections;
+using namespace Windows::Foundation::Collections;
+using namespace Windows::Foundation;
+using namespace Windows::UI::Core;
+
+using namespace UwpTestWinRtComponentCpp;
+using namespace Platform;
+
+Class1::Class1()
+{
+
+}
+
+//Public API
+IVector<double>^ Class1::ComputeResult(double input)
+{
+ // Implement your function in ISO C++ or
+ // call into your C++ lib or DLL here. This example uses AMP.
+ float numbers[] = { 1.0, 10.0, 60.0, 100.0, 600.0, 10000.0 };
+ array_view<float, 1> logs(6, numbers);
+
+ // See http://msdn.microsoft.com/en-us/library/hh305254.aspx
+ parallel_for_each(
+ logs.extent,
+ [=](index<1> idx) restrict(amp)
+ {
+ logs[idx] = concurrency::fast_math::log10(logs[idx]);
+ }
+ );
+
+ // Return a Windows Runtime-compatible type across the ABI
+ auto res = ref new Vector<double>();
+ int len = safe_cast<int>(logs.extent.size());
+ for (int i = 0; i < len; i++)
+ {
+ res->Append(logs[i]);
+ }
+
+ // res is implicitly cast to IVector<double>
+ return res;
+}
+
+// Determines whether the input value is prime.
+bool Class1::is_prime(int n)
+{
+ if (n < 2)
+ return false;
+ for (int i = 2; i < n; ++i)
+ {
+ if ((n % i) == 0)
+ return false;
+ }
+ return true;
+}
+
+// This method computes all primes, orders them, then returns the ordered results.
+IAsyncOperationWithProgress<IVector<int>^, double>^ Class1::GetPrimesOrdered(int first, int last)
+{
+ return create_async([this, first, last]
+ (progress_reporter<double> reporter) -> IVector<int>^ {
+ // Ensure that the input values are in range.
+ if (first < 0 || last < 0) {
+ throw ref new InvalidArgumentException();
+ }
+ // Perform the computation in parallel.
+ concurrent_vector<int> primes;
+ long operation = 0;
+ long range = last - first + 1;
+ double lastPercent = 0.0;
+
+ parallel_for(first, last + 1, [this, &primes, &operation,
+ range, &lastPercent, reporter](int n) {
+
+ // Increment and store the number of times the parallel
+ // loop has been called on all threads combined. There
+ // is a performance cost to maintaining a count, and
+ // passing the delegate back to the UI thread, but it's
+ // necessary if we want to display a determinate progress
+ // bar that goes from 0 to 100%. We can avoid the cost by
+ // setting the ProgressBar IsDeterminate property to false
+ // or by using a ProgressRing.
+ if (InterlockedIncrement(&operation) % 100 == 0)
+ {
+ reporter.report(100.0 * operation / range);
+ }
+
+ // If the value is prime, add it to the local vector.
+ if (is_prime(n)) {
+ primes.push_back(n);
+ }
+ });
+
+ // Sort the results.
+ std::sort(begin(primes), end(primes), std::less<int>());
+ reporter.report(100.0);
+
+ // Copy the results to a Vector object, which is
+ // implicitly converted to the IVector return type. IVector
+ // makes collections of data available to other
+ // Windows Runtime components.
+ return ref new Vector<int>(primes.begin(), primes.end());
+ });
+}
+
+// This method returns no value. Instead, it fires an event each time a
+// prime is found, and passes the prime through the event.
+// It also passes progress info.
+IAsyncActionWithProgress<double>^ Class1::GetPrimesUnordered(int first, int last)
+{
+
+ auto window = Windows::UI::Core::CoreWindow::GetForCurrentThread();
+ m_dispatcher = window->Dispatcher;
+
+
+ return create_async([this, first, last](progress_reporter<double> reporter) {
+
+ // Ensure that the input values are in range.
+ if (first < 0 || last < 0) {
+ throw ref new InvalidArgumentException();
+ }
+
+ // In this particular example, we don't actually use this to store
+ // results since we pass results one at a time directly back to
+ // UI as they are found. However, we have to provide this variable
+ // as a parameter to parallel_for.
+ concurrent_vector<int> primes;
+ long operation = 0;
+ long range = last - first + 1;
+ double lastPercent = 0.0;
+
+ // Perform the computation in parallel.
+ parallel_for(first, last + 1,
+ [this, &primes, &operation, range, &lastPercent, reporter](int n)
+ {
+ // Store the number of times the parallel loop has been called
+ // on all threads combined. See comment in previous method.
+ if (InterlockedIncrement(&operation) % 100 == 0)
+ {
+ reporter.report(100.0 * operation / range);
+ }
+
+ // If the value is prime, pass it immediately to the UI thread.
+ if (is_prime(n))
+ {
+ // Since this code is probably running on a worker
+ // thread, and we are passing the data back to the
+ // UI thread, we have to use a CoreDispatcher object.
+ m_dispatcher->RunAsync(CoreDispatcherPriority::Normal,
+ ref new DispatchedHandler([this, n, operation, range]()
+ {
+ this->primeFoundEvent(n);
+
+ }, Platform::CallbackContext::Any));
+
+ }
+ });
+ reporter.report(100.0);
+ });
+}
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.h b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.h
new file mode 100644
index 00000000..e01197c7
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class1.h
@@ -0,0 +1,93 @@
+#pragma once
+#include <collection.h>
+#include <ppl.h>
+#include <amp.h>
+#include <amp_math.h>
+using namespace Windows::Foundation::Collections;
+
+namespace UwpTestWinRtComponentCpp
+{
+ //short, long
+ public delegate void PrimeFoundHandler(int result);
+ public delegate void PrimeFoundHandlerWithSpecificType(/*Windows::Foundation::Collections::*/IMap<double, float> ^ result);
+
+ public ref class Class1 sealed
+ {
+ public:
+ Class1();
+ public:
+ // Synchronous method.
+ Windows::Foundation::Collections::IVector<double> ^ ComputeResult(double input);
+
+ // Asynchronous methods
+ Windows::Foundation::IAsyncOperationWithProgress<Windows::Foundation::Collections::IVector<int>^, double>^
+ GetPrimesOrdered(int first, int last);
+ Windows::Foundation::IAsyncActionWithProgress<double>^ GetPrimesUnordered(int first, int last);
+
+ // Event whose type is a delegate "class"
+ event PrimeFoundHandler^ primeFoundEvent;
+
+ private:
+ bool is_prime(int n);
+ Windows::UI::Core::CoreDispatcher ^ m_dispatcher;
+ };
+
+ public delegate void SomethingHappenedEventHandler(Class1 ^ sender, Platform::String ^ s);
+
+ public ref class CustomAttribute1 sealed : Platform::Metadata::Attribute {
+ public: bool Field1;
+ public: Windows::Foundation::HResult Field2;
+ //public: Platform::CallbackContext Field3 = CallbackContext.Any;
+
+ private: delegate void SomethingHappenedEventHandler();
+ };
+
+ public enum class Color1 {
+ Red, Blue
+ };
+}
+
+namespace Namespace222 {
+
+
+ using namespace std::chrono;
+
+ using namespace Windows::ApplicationModel::Core;
+ using namespace Windows::Foundation;
+ using namespace Windows::UI::Core;
+ using namespace Windows::UI::Composition;
+ using namespace Windows::Media::Core;
+ using namespace Windows::Media::Playback;
+ using namespace Windows::System;
+ using namespace Windows::Storage;
+ using namespace Windows::Storage::Pickers;
+
+
+ public ref class App sealed: IFrameworkView
+ {
+ ref class NestedClass1 {};
+
+ public: virtual void Initialize(CoreApplicationView ^ applicationView)
+ {
+ };
+
+ void virtual Load(Platform::String ^ entryPoint)
+ {
+ };
+
+ void virtual Uninitialize()
+ {
+ };
+
+ void virtual Run()
+ {
+
+ };
+
+ void virtual SetWindow(CoreWindow ^ window) {};
+ void SetWindow1(CoreWindow ^ window) {};
+
+ public: property CoreWindow ^ m_activated;
+ public: property CompositionTarget ^ m_target;
+ };
+} \ No newline at end of file
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.cpp b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.cpp
new file mode 100644
index 00000000..e676f59b
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.cpp
@@ -0,0 +1,7 @@
+#include "pch.h"
+#include "Class2.h"
+
+
+Namespace2::Class2::Class2()
+{
+}
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.h b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.h
new file mode 100644
index 00000000..2544e408
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/Class2.h
@@ -0,0 +1,44 @@
+#pragma once
+#include<Class1.h>
+
+namespace Namespace2 {
+ public ref class Class2 : public Windows::UI::Xaml::Application
+ {
+ private:
+ Class2();
+
+ private: ref class Class2Nested {};
+ };
+
+ public ref class Class3 sealed : public Windows::UI::Xaml::Application
+ {
+ private:
+ Class3();
+
+ // public: double DoubleField;
+
+ public: property long long LongProperty;
+ public: property Platform::Array<Platform::Type ^ > ^ ArrayOfTypeProperty;
+
+ protected: property Platform::Array<Platform::Type ^ > ^ ArrayOfTypePropertyProtected;
+
+ //for public wnRT type -> *
+ // public: unsigned long long MethodWithReferenceParameter(Class2 ^ * refParam);
+ //only for private
+ private: unsigned long long MethodWithReferenceParameter(double & refParam);
+ };
+
+ public value class Class4 {
+ //at least 1 public field
+ public: Platform::String ^ StringField;
+
+ //не может нон паблик дата мемберс
+ //private: property Platform::String ^ StringField2;
+ };
+
+ generic<typename T>
+ private interface class IFooNew {
+
+ };
+}
+
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj
new file mode 100644
index 00000000..cf1008fc
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|ARM">
+ <Configuration>Debug</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|ARM">
+ <Configuration>Release</Configuration>
+ <Platform>ARM</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{b40e3216-ad33-4cde-b645-bb1c68457153}</ProjectGuid>
+ <Keyword>WindowsRuntimeComponent</Keyword>
+ <RootNamespace>UwpTestWinRtComponentCpp</RootNamespace>
+ <DefaultLanguage>en-US</DefaultLanguage>
+ <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
+ <AppContainerApplication>true</AppContainerApplication>
+ <ApplicationType>Windows Store</ApplicationType>
+ <WindowsTargetPlatformVersion>10.0.15063.0</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformMinVersion>10.0.10586.0</WindowsTargetPlatformMinVersion>
+ <ApplicationTypeRevision>10.0</ApplicationTypeRevision>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v141</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <GenerateManifest>false</GenerateManifest>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <GenerateManifest>false</GenerateManifest>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+ <GenerateManifest>false</GenerateManifest>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+ <GenerateManifest>false</GenerateManifest>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <GenerateManifest>false</GenerateManifest>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <GenerateManifest>false</GenerateManifest>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+ <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
+ <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
+ <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <DisableSpecificWarnings>28204</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ <PostBuildEvent>
+ <Command>xcopy "$(SolutionDir)\$(Configuration)\$(ProjectName)\$(ProjectName).winmd" "$(SolutionDir)mdoc\mdoc.Test\bin\$(Configuration)\" /F /R /Y /I</Command>
+ </PostBuildEvent>
+ <PostBuildEvent>
+ <Message>Copy .winmd to another folder for unit test purposes</Message>
+ </PostBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+ <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
+ <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
+ <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <DisableSpecificWarnings>28204</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+ <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
+ <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
+ <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <DisableSpecificWarnings>28204</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+ <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
+ <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
+ <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <DisableSpecificWarnings>28204</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PreprocessorDefinitions>_WINRT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+ <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
+ <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
+ <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <DisableSpecificWarnings>28204</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PreprocessorDefinitions>_WINRT_DLL;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
+ <PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
+ <AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
+ <AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
+ <DisableSpecificWarnings>28204</DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <SubSystem>Console</SubSystem>
+ <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="Class2.h" />
+ <ClInclude Include="pch.h" />
+ <ClInclude Include="Class1.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="Class2.cpp" />
+ <ClCompile Include="pch.cpp">
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
+ </ClCompile>
+ <ClCompile Include="Class1.cpp" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj.filters b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj.filters
new file mode 100644
index 00000000..4fbd5983
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/UwpTestWinRtComponentCpp.vcxproj.filters
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Resources">
+ <UniqueIdentifier>13ce12d4-0e01-41af-a0e4-3e189db451ae</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="pch.cpp" />
+ <ClCompile Include="Class1.cpp" />
+ <ClCompile Include="Class2.cpp" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="pch.h" />
+ <ClInclude Include="Class1.h" />
+ <ClInclude Include="Class2.h" />
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.cpp b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.cpp
new file mode 100644
index 00000000..bcb5590b
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.cpp
@@ -0,0 +1 @@
+#include "pch.h"
diff --git a/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.h b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.h
new file mode 100644
index 00000000..10fe677c
--- /dev/null
+++ b/mdoc/mdoc.Test/UwpTestWinRtComponentCpp/pch.h
@@ -0,0 +1,4 @@
+#pragma once
+
+#include <collection.h>
+#include <ppltasks.h>
diff --git a/mdoc/mdoc.Test/mdoc.Test.csproj b/mdoc/mdoc.Test/mdoc.Test.csproj
index 4feee40c..4792d11b 100644
--- a/mdoc/mdoc.Test/mdoc.Test.csproj
+++ b/mdoc/mdoc.Test/mdoc.Test.csproj
@@ -24,8 +24,15 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
+ <PropertyGroup>
+ <RunPostBuildEvent>Always</RunPostBuildEvent>
+ </PropertyGroup>
<ItemGroup>
<Reference Include="FSharp.Core, Version=4.4.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
+ <Reference Include="mdoc.Test.Cplusplus, Version=1.0.6544.28971, Culture=neutral, processorArchitecture=AMD64">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\..\external\Test\mdoc.Test.Cplusplus.dll</HintPath>
+ </Reference>
<Reference Include="System" />
<Reference Include="nunit.framework">
<HintPath>..\..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
@@ -42,10 +49,25 @@
<Reference Include="Mono.Cecil.Rocks, Version=0.10.0.0, Culture=neutral, PublicKeyToken=50cebf1cceb9d05e, processorArchitecture=MSIL">
<HintPath>..\..\packages\Mono.Cecil.0.10.0-beta5\lib\net40\Mono.Cecil.Rocks.dll</HintPath>
</Reference>
+ <Reference Include="Windows">
+ <HintPath>..\..\external\Windows\Windows.WinMD</HintPath>
+ </Reference>
+ <Reference Include="Windows.Foundation.FoundationContract">
+ <HintPath>..\..\external\Windows\Windows.Foundation.FoundationContract.winmd</HintPath>
+ </Reference>
+ <Reference Include="Windows.Foundation.UniversalApiContract">
+ <HintPath>..\..\external\Windows\Windows.Foundation.UniversalApiContract.winmd</HintPath>
+ </Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="BasicFormatterTests.cs" />
+ <Compile Include="CppWinRtMembersTests.cs" />
+ <Compile Include="CppWinRtFormatterTests.cs" />
<Compile Include="FSharp\BasicFSharpFormatterTests.cs" />
+ <Compile Include="CppCxFormatterMembersTests.cs" />
+ <Compile Include="CppFormatterTests.cs" />
+ <Compile Include="CppCxFormatterTypesTests.cs" />
+ <Compile Include="CppFullFormatterTests.cs" />
<Compile Include="FormatterTests.cs" />
<Compile Include="FSharp\FSharpFormatterTests.cs" />
<Compile Include="FSharp\FSharpUsageFormatterTests.cs" />
@@ -86,6 +108,7 @@
</ProjectReference>
</ItemGroup>
<ItemGroup />
+ <ItemGroup />
<ItemGroup>
<Content Include="cppcli\Debug\cppcli.dll">
<Link>SampleClasses\cppcli.dll</Link>
diff --git a/mdoc/mdoc.csproj b/mdoc/mdoc.csproj
index 71b58d53..81e9c353 100644
--- a/mdoc/mdoc.csproj
+++ b/mdoc/mdoc.csproj
@@ -52,6 +52,7 @@
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Compile Include="Mono.Documentation\Updater\Formatters\ApplePlatformEnumFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\CppFormatters\CppWinRtMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\JsFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\JsMemberFormatter.cs" />
@@ -59,6 +60,11 @@
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpFullMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\FSharpUsageFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\CppFormatters\CppWinRtFullMemberFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\CppFormatters\CppCxFullMemberFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\CppFormatters\CppFullMemberFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\CppFormatters\CppCxMemberFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\CSharpMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\StandardFlagsEnumFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\DefaultAttributeValueFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\AttributeValueFormatter.cs" />
@@ -69,7 +75,7 @@
<Compile Include="Mono.Documentation\Updater\Formatters\SlashDocMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\DocTypeMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\DocTypeFullMemberFormatter.cs" />
- <Compile Include="Mono.Documentation\Updater\Formatters\CSharpMemberFormatter.cs" />
+ <Compile Include="Mono.Documentation\Updater\Formatters\CppFormatters\CppMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\CSharpFullMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\CSharpNativeTypeMemberFormatter.cs" />
<Compile Include="Mono.Documentation\Updater\Formatters\ILNativeTypeMemberFormatter.cs" />